Osgi 为什么要实现创建ApacheFelix服务的接口?
我注意到开发人员创建ApacheFelix服务的多种方式。所附的每个代码片段似乎都有效。需要一些帮助才能理解,哪种语法最适合哪种场景 示例1:创建的服务没有接口Osgi 为什么要实现创建ApacheFelix服务的接口?,osgi,apache-felix,declarative-services,Osgi,Apache Felix,Declarative Services,我注意到开发人员创建ApacheFelix服务的多种方式。所附的每个代码片段似乎都有效。需要一些帮助才能理解,哪种语法最适合哪种场景 示例1:创建的服务没有接口 服务声明 D 通过@Reference注释使用服务 私人服务类服务类 示例2:服务实现接口。@Service注释没有值属性 -服务声明 @Component @Service public class ServiceViaInterfaceImpl implements ServiceViaInterface{ } @Comp
- 服务声明
- 通过@Reference注释使用服务 私人服务类服务类
@Component
@Service
public class ServiceViaInterfaceImpl implements ServiceViaInterface{
}
@Component
@Service(ServiceViaInterface.class)
public class ServiceViaInterfaceImpl implements ServiceViaInterface{
}
- 通过@Reference注释使用服务 专用ServiceViaInterface ServiceViaInterface
@Component
@Service
public class ServiceViaInterfaceImpl implements ServiceViaInterface{
}
@Component
@Service(ServiceViaInterface.class)
public class ServiceViaInterfaceImpl implements ServiceViaInterface{
}
- 通过@Reference注释使用服务 专用ServiceViaInterface ServiceViaInterface
@service
注释,这是您通常应该做的事情。当您使用@Service
并且组件直接实现一个接口时,构建工具推断您的组件希望作为该接口下的服务发布
示例3在运行时与示例2具有完全相同的效果,只是在代码中更加明确了一点。有些人喜欢它,因为它是明确的,其他人(包括我)不喜欢它,因为它是多余的