Ссылочный плагин Maven SCR Использование целевых атрибутов
Вы можете отфильтровать доступные реализации через атрибут target в @Reference, как показано ниже:
@Reference (target = "(k1 = v1)") ISomeServiceContract svc1;
Мой вопрос о значении фильтра. Документация говорит об этом очень мало, и я в замешательстве.
http://felix.apache.org/documentation/subprojects/apache-felix-maven-scr-plugin/scr-annotations.html заявляет следующее для атрибута "target":
Msgstr "Фильтр целевых сервисов для выбора определенных сервисов, которые будут доступны".
Имеют ли значения фильтра в плагине SCR определенный синтаксис (т. Е. Зачем мне даже скобка вокруг ключа равна спецификации значения)? Позволяет ли вам указывать такие вещи, как "(k1=v1&&k2=v2)" или "(k1=v1||k2=v2&&(...))".
1 ответ
Синтаксис объясняется в главе "3.2.7 Синтаксис фильтра" спецификации OSGi Core. Фильтры, которые вы определяете в аннотации SCR, являются фильтрами OSGi. Некоторые примеры:
(k1=v1)
(&(k2=v1)(k2=v2))
(&(|(k1=v1)(k2=v2))(k3=v3))
Синтаксис, который определяет OSGi, такой же, как и для фильтров поиска LDAP.