它定义了 felix SCR 注释的文档。 http://felix.apache.org/site/scr-annotations.html#SCRAnnotations-Reference
我想使用 @Reference Annotation 并且还想将目标服务设置为配置参数。
文档说:一个服务目标过滤器,用于选择要提供的特定服务。为了能够通过配置属性覆盖此值的值,必须声明此参数。如果不声明参数,则不会生成相应的声明属性
如何声明这个参数。
它定义了 felix SCR 注释的文档。 http://felix.apache.org/site/scr-annotations.html#SCRAnnotations-Reference
我想使用 @Reference Annotation 并且还想将目标服务设置为配置参数。
文档说:一个服务目标过滤器,用于选择要提供的特定服务。为了能够通过配置属性覆盖此值的值,必须声明此参数。如果不声明参数,则不会生成相应的声明属性
如何声明这个参数。
有点晚了,但我在任何地方都找不到一个简单的例子,所以无论如何这可能对其他人有帮助。
例如,使用 Felix 注释过滤 DataSource:
@Reference(cardinality = OPTIONAL_UNARY, policy = DYNAMIC, name = "dataSource")
private DataSource dataSource;
生成此 XML:
<reference name="dataSource" interface="javax.sql.DataSource" cardinality="0..1" policy="dynamic" bind="bindDataSource" unbind="unbindDataSource"/>
根据OSGi 4.2 Compendium Spec的第 112.6 节,该属性需要附加.target
因此,在我的配置中,我将 LDAP 过滤器设置为:
dataSource.target = (some.key=some.value)
注意:我没有使用 un/bind 方法,而是让 DS 为我生成这些方法。