Apache Felix的SCR允许声明(通过注释或XML)组件,这些组件随后将被实例化,连接到它们的依赖项并注册为OSGi服务。
也可以跳过服务注册部分,而仅由SCR创建组件(通过指定@ scr.component,但省略@ scr.service)。我以为这可能仅对依赖项注入有用(在捆绑包内),但是如何消耗组件?可以使用scr.reference注入服务,但这不适用于非服务(或者不是)吗?
直接访问SCR API可以正常工作,但是直接与容器服务通信会破坏DI的目的。
最佳答案
我认为您只能注入OSGI服务。如果您想使用依赖注入,也许您应该检查google Guice。不幸的是,我不知道它是否可以在OSGI容器中立即使用。
关于SCR组件,如果一个组件提供了要在另一个组件中使用的功能,我认为应该使用服务来公开它。
关于java - Felix/OSGi:如何使用不是OSGi服务的SCR组件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/454464/