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