我正在尝试在OSGi中使用组件工厂。我的意图是使用作为工厂管理器的类B来创建作为工厂公开的类A的实例。类A包含一些带有@Reference注释的服务,这些服务运行良好。同样的方法用于C类,工厂(类似于A类),具有与@Reference相同的服务引用。
- 它会向类A&C级
- 如果是(对于问题1),服务工厂是否会为A类服务工作;C级?(组件工厂内具有属性servicefactory的服务(A类和C类)
- 如果没有(对于问题1),是否有任何方法可以在类A&使用@Reference时为C类
- 我可以使用新的运营商来实现同样的A级和A级服务;类C,但我期待某种DI方法。在DS中是否可能/可实现
ServiceFactory的行为独立于DS。假设您在R6中没有使用新的PrototypeServiceFactory,那么为ServiceFactory服务生成多个get的bundle将看到相同的服务对象。不同的bundle将看到不同的服务对象(假设ServiceFactory实现返回不同的对象)。
因此,如果A和C在同一个捆绑包中,那么它们将为引用的服务看到相同的服务对象,而与引用的服务是否是ServiceFactory无关。
如果您需要不同的服务对象,您应该查看Core R6中添加并在DS 1.3中支持的PrototypeServiceFactory。