我正在创建声明性服务,我们称之为Service1和Service2。 在我的eclipse RCP应用程序中,一切正常。 现在我希望将Service1注入Service2,因此我的Service2类有一个像这样的新字段:
@Inject
Service1 myService1;
这永远不会被注入并在Eclipse 4中稍微调试一下Declarative Service instanciation(org.eclipse.equinox.internal.ds.model.ServiceComponent),似乎在实例化类之后没有任何东西被注入。 这是eclipse中DS实现的限制吗?
有没有办法解决这个问题? 感谢。
答案 0 :(得分:2)
不,默认情况下不可能。您可以创建一些在@Acivate上调用的实用程序类,它在跟踪器上搜索相应的服务并使用反射设置@Inject服务,但在这种情况下,您将失去所有生命周期,因此它不是一个很好的osgi方式。
如果您要使用@Inject注释,您可以使用pax-cdi,但在这种情况下,您不能在该类上使用声明性服务注释 - 因为在这种情况下,pax将实例化并注册服务跟踪器。