0

您可以通过@Reference 的“target”属性过滤掉可用的实现,如下所示:

@Reference(target="(k1=v1)") ISomeServiceContract svc1;

我的问题是关于过滤器值。文档对此几乎没有提及,我很困惑。

http://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html#reference为“目标”属性声明以下内容:

“用于选择要提供的特定服务的服务目标过滤器”。

SCR 插件中的过滤器值是否具有特定的语法(即为什么我什至需要括号周围的键等于值规范)?它是否允许您指定诸如“(k1=v1&&k2=v2)”或“(k1=v1||k2=v2&&(...))”之类的内容。

4

1 回答 1

1

语法在OSGi 核心规范的“3.2.7 过滤器语法”一章中进行了解释。您在 SCR 注释中定义的过滤器是 OSGi 过滤器。一些例子:

(k1=v1)
(&(k2=v1)(k2=v2))
(&(|(k1=v1)(k2=v2))(k3=v3))

OSGi 指定的语法与 LDAP 搜索过滤器相同。

于 2016-06-20T15:30:46.067 回答