gpt4 book ai didi

service - 为什么我们需要一个接口(interface)来定义 aem 中的每个服务?

转载 作者:行者123 更新时间:2023-12-01 21:57:55 25 4
gpt4 key购买 nike

我已经工作了一段时间,但不知何故从未考虑过这一点。我参与过的每个 aem 项目的代码结构都有一个相似之处。每个编写的服务都有一个接口(interface)。

我的问题是为什么我们需要为每个服务提供一个接口(interface)?

@reference@inject 不能使用没有接口(interface)的服务吗?

最佳答案

使用接口(interface)是将服务的用户与实现分离的良好实践。在许多情况下,您甚至希望拥有一个 API bundle ,这样服务的用户就不需要对实现 bundle 的 Maven 依赖。

另一方面,您不需要使用接口(interface)。特别是当我在 bundle 内连接组件时,接口(interface)通常是不必要的层。在这种情况下,只需直接使用类导出服务即可。

参见here for an example :

@Component(service = DistributionMetricsService.class)
public class DistributionMetricsService {
...
}

here for the client code :

@Reference
private DistributionMetricsService distributionMetricsService;

因此,主要区别在于,如果要导出组件及其实现类,则必须指定 service 属性。

关于service - 为什么我们需要一个接口(interface)来定义 aem 中的每个服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55804200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com