我刚刚开始玩OSGi服务并且遇到以下情况。我有一个包含2项服务的项目。服务A需要服务B,所以我尝试使用
注入依赖服务@Inject
private ServiceB svc;
但框架不会注入。如果我在服务A中设置以下两种方法 并在框架调用的OSGi componentA.xml中将这些方法设置为“bind / undbind” 这些方法我可以在服务A中使用服务B.
public synchronized void bind(IServiceB service)
{
this.svc = service;
}
public synchronized void unbind(IServiceB service)
{
if (this.svc == service)
{
this.svc = null;
}
}
问题是,为什么它不能与@Inject一起使用?对不起,如果这是一个愚蠢的问题,我对这整个话题都很陌生。非常感谢提前!
答案 0 :(得分:0)
看起来您正在使用Declarative Services,它不支持字段注入或JSR-330注释。现场注入在OSGi中的实用性有限,其中服务可以随时注入或“未注入”。方法注入通常更有用,因为它使您有机会在发生这种情况时执行某些操作。
但是我建议您使用Declarative Services的注释。这将使您不必手动编写component.xml。