首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许iPOJO @Bind/@Unbind方法的签名

允许iPOJO @Bind/@Unbind方法的签名
EN

Stack Overflow用户
提问于 2012-05-03 00:21:31
回答 1查看 873关注 0票数 0

在我见过的所有iPOJO示例中,@Bind@Unbind回调仅将服务实例作为参数。

代码语言:javascript
复制
// @Requires
// private Foo foo;

@Bind
public void bindFoo(Foo foo) { ... }

@Unbind
public void unbindFoo(Foo foo) { ... }

蓝图also allows you to have

代码语言:javascript
复制
public void bindFoo(ServiceReference reference) { ... }

public void bindFoo(Foo foo, Map<String, Object> properties) { ... }

iPOJO回调是否也可以访问服务属性或ServiceReference?或者应该使用whiteboard handler来代替它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-03 20:19:31

回调可以有以下签名之一:

不带任何参数的服务引用:方法只是服务对象的通知:对象是隐含的服务对象(方法(

  1. ))具有OSGi服务引用的映射(
  2. ):出现或消失的服务引用(方法( ServiceReference引用))具有服务对象和映射的服务引用(方法( svc,ServiceReference引用))具有服务对象和映射内的服务属性的
    1. (方法(服务svc,映射属性)在字典内具有服务对象和服务属性的
    2. (方法(服务服务,字典properties))

因此,支持:

代码语言:javascript
复制
@Bind
public void bind() { ... }

@Bind
public void bind(Service svc) { ... }

@Bind
public void bind(ServiceReference ref) { ... }

@Bind
public void bind(Service svc, ServiceReference ref) { ... }

@Bind
public void bind(Service svc, Map properties) { ... }

@Bind
public void bind(Service svc, Dictionary properties) { ... }

所以访问服务属性是没有问题的。除非您真的需要ServiceReference,否则最好不要使用这个特定于OSGi的对象(降低可测试性)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10417764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档