在我见过的所有iPOJO示例中,@Bind和@Unbind回调仅将服务实例作为参数。
// @Requires
// private Foo foo;
@Bind
public void bindFoo(Foo foo) { ... }
@Unbind
public void unbindFoo(Foo foo) { ... }蓝图also allows you to have
public void bindFoo(ServiceReference reference) { ... }
public void bindFoo(Foo foo, Map<String, Object> properties) { ... }iPOJO回调是否也可以访问服务属性或ServiceReference?或者应该使用whiteboard handler来代替它呢?
发布于 2012-05-03 20:19:31
回调可以有以下签名之一:
不带任何参数的服务引用:方法只是服务对象的通知:对象是隐含的服务对象(方法(
因此,支持:
@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的对象(降低可测试性)。
https://stackoverflow.com/questions/10417764
复制相似问题