我已经使用依赖框架 Guice 构建了一个应用程序。现在我将转到 OSGI 并开始使用捆绑信息扩展我的 jar。
我目前面临的主要问题是如何正确设置依赖注入。我有捆绑 A,它导出一些包。然后 Bundle B 定义了一个组件,该组件需要注入 bundle A 的一些对象(AA 类)。
我可以为包 A 中的 AA 类设置一个服务,该服务将自动注入,但如果包 A 还依赖于包 A 中的某个类,可能没有导出。我是否必须将第二类设置为服务,这将不起作用,因为它没有导出。
以下代码将显示问题:
捆绑包 A
package test.bundleA.api
public class AA {
@Inject
public AA(AInternal someReference) {...}
}
package test.bundleA.internal
public class AInternal {...}
B 组:
package test.bundleB.api
public class ComponentB {
@Inject
public ComponentB(AA refToA) {...}
}
当我将使用导出包中捆绑 A 中的任何其他类时,我是否必须为它们中的每一个设置一个服务?
解决包内甚至包边界上的依赖注入问题的常用方法是什么?