在我看过的所有iPOJO示例中,@Bind
和@Unbind
回调仅将服务实例作为参数,即
// @Requires
// private Foo foo;
@Bind
public void bindFoo(Foo foo) { ... }
@Unbind
public void unbindFoo(Foo foo) { ... }
public void bindFoo(ServiceReference reference) { ... }
public void bindFoo(Foo foo, Map<String, Object> properties) { ... }
iPOJO回调是否也可以访问服务属性或ServiceReference
?或者应该使用whiteboard handler代替呢?
答案 0 :(得分:1)
回调可以包含以下签名之一:
所以,支持:
@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特定对象(降低可测试性)。