0

以下に示すように、@Reference の「ターゲット」属性を使用して、利用可能な実装を除外できます。

@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 Core 仕様の「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 に答える