2012-08-07 104 views
1

它为felix SCR注释定义文档。 http://felix.apache.org/site/scr-annotations.html#SCRAnnotations-Reference在Apache Felix中为@Reference注释声明目标参数

我想要使用@Reference Annotation,并且还希望将目标服务设置为配置参数。

文档说:一个服务目标筛选器,用于选择可用的特定服务。为了能够通过配置属性覆盖此值的值,必须声明此参数。如果未声明参数,则不会生成相应的声明属性

如何声明此参数。

回答

1

有点晚了,但我在任何地方都找不到一个简单的例子,所以这可能会帮助其他人。

例如,为了与Felix注释过滤数据源:

@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"/> 

的属性需要.TARGET附加到它作为每OSGi 4.2 Compendium Spec

第112.6

所以在我的配置中,我已经将LDAP过滤器设置为:

dataSource.target = (some.key=some.value) 

注:我没有使用UN /绑定方法,让DS生成这些对我来说。