作者:mobiledu2502931077 | 来源:互联网 | 2022-10-28 08:04
我已经工作了一段时间了,但是以某种方式从未考虑过。我从事的每个aem项目在代码结构上都有一个相似之处。每个编写的服务都有一个接口。
我的问题是为什么我们每个服务都需要一个接口?
可@reference
还是@inject
没有一个接口使用的服务?
1> Christian Sc..:
使用接口是一种将服务用户与实现脱钩的好习惯。在许多情况下,您甚至希望拥有一个API捆绑包,因此该服务的用户不需要对实现捆绑包具有maven依赖性。
另一方面,您不需要使用接口。特别是当我将组件连接到捆绑接口内部时,通常是不必要的层。在这种情况下,只需将服务直接与类一起导出即可。
请参阅此处的示例:
@Component(service = DistributionMetricsService.class)
public class DistributionMetricsService {
...
}
和这里的客户端代码:
@Reference
private DistributionMetricsService distributionMetricsService;
因此,主要区别在于,service
如果要导出带有实现类的组件,则必须指定属性。