Maven SCR 插件参考注解目标属性使用

Maven SCR Plugin Reference Annotation Target Attribute Usage

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

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

我的问题是关于过滤值的。文档对此只字未提,我很困惑。

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

"A service target filter to select specific services to be made available".

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

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

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

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