我有这个场景,我有三个声明性服务,提供相同的接口(比如一个读者接口,我有readerimpl1-database- readerimpl2-flat file- readerimpl3-memory) . 我希望有一个只绑定到数据库实现的使用者 . 在组件定义中,我们给它一个名称,所以我很确定名称在注册表中,所以如果我要添加一个activate方法,我可以使用名称从组件上下文中查找 .
我想通过bind / unbind尝试使用服务名称作为参数 . 我很确定组件引用元素中的“target”参数可用于执行此操作,但我还没有找到如何使用它 .
还有其他人这样做过吗?
这与使用@Reference(mapped-name =“foo”)类似
1 回答
目标只是一个OSGi filter . 您可以使用它来过滤任何服务属性 . 因此,如果您的服务具有名为
backend
且属性值为file
或database
的属性,则可以使用以下目标进行绑定:数据库后端本身的服务将注册为: