Использование интерфейсов является хорошей практикой для отделения пользователя службы от реализации.Во многих случаях вам даже нужно иметь пакет API, поэтому пользователю службы не требуется зависимость maven от пакета реализации.
С другой стороны, вам не нужно использовать интерфейсы.Особенно когда я соединяю компоненты внутри связки, интерфейсы часто являются ненужным уровнем.В этом случае просто экспортируйте службу напрямую с классом.
См. здесь для примера :
@Component(service = DistributionMetricsService.class)
public class DistributionMetricsService {
...
}
и здесь для кода клиента :
@Reference
private DistributionMetricsService distributionMetricsService;
Таким образом, основное отличие состоит в том, что вы должны указать свойство service
, если хотите экспортировать компонент с его классом реализации.