java - felix scr 中 @Reference 和 @References 注解之间的区别

标签 java osgi apache-karaf osgi-bundle

我正在开发一个 OSGi 包,它使用 @Reference 进行服务引用。在 Google 中搜索时,我可以看到一些在类级别使用 @References 注释的示例,并且在类内部仅将绑定(bind)和取消绑定(bind)方法用于所有服务引用。

@References(
   @Reference(cardinality= ReferenceCardinality.MANDATORY_MULTIPLE, referenceInterface = TestInterface1.class,policy = ReferencePolicy.DYNAMIC)
   @Reference(cardinality= ReferenceCardinality.MANDATORY_MULTIPLE, referenceInterface = TestInterface2.class,policy = ReferencePolicy.DYNAMIC))
class TestComponent {
..
public void bind(TestInterface1 interface)
{}
public void unbind(TestInterface1 interface){}

public void bind(TestInterface2 interface)
{}
public void unbind(TestInterface2 interface){}

}

@Reference 和 @References 之间有什么区别?是否有任何使用@References 的性能测量/推荐测量?由于所有引用类的绑定(bind)和取消绑定(bind)方法名称都是相同的。

最佳答案

在Java 7中,不可能定义repeating annotation 。因此,必须使用容器注解。

@References 是一种容器注释,允许您在一种类型上指定多个 @Reference 注释。它没有任何性能差异。它不可能有,因为这些注释在运行时根本不被处理(仅在编译时由注释处理器处理)。

关于java - felix scr 中 @Reference 和 @References 注解之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39211041/

相关文章:

java - wicket 组件中的提示()

OSGi 功能卸载有效,但 bundle 仍然安装

java - 在表中显示从数据库中检索到的值

java - 使用 Jackson 获得更好的解析错误

java - 如何检测是否在osgi容器中运行

java - SLF4J : Class path contains multiple SLF4J bindings - Eclipse

java - 如何创建具有可选包解析的工作 OSGi 包?

apache-camel - 将 osgi-bundle 部署到 ServiceMix 的正确方法是什么?

java - 如何禁用 karaf-maven-plugin 4 严格依赖约束检查

java - 如何为一个数据库写2个ip?