java - 菲利克斯/OSGi : How to use SCR components that are not OSGi services?

标签 java dependency-injection osgi apache-felix

Apache Felix 的 SCR 允许声明(通过注释或 XML)组件,然后将这些组件实例化、连接到其依赖项并注册为 OSGi 服务。

也可以跳过服务注册部分,只让 SCR 创建组件(通过指定 @scr.component,但省略 @scr.service) 。我认为这可能仅对于依赖注入(inject)(在 bundle 内)有用,但是如何使用组件呢?可以使用scr.reference注入(inject)服务,但这对于非服务不起作用(或者确实如此)?

直接访问 SCR API 是可行的,但直接与容器服务通信有点违背了 DI 的目的。

最佳答案

我认为你只能注入(inject) OSGI 服务。如果你想使用依赖注入(inject)也许你应该检查 google Guice。不幸的是,我不知道它是否可以在 OSGI 容器中开箱即用。

关于 SCR 组件,如果一个组件提供了您想要在另一个组件中使用的功能,我认为应该使用服务来公开它。

关于java - 菲利克斯/OSGi : How to use SCR components that are not OSGi services?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/454464/

相关文章:

java - 只有一个 Activity 的新 jframe

java - Sonarlint 安装在 eclipse Kepler 上但未找到

java - 如何将 UTF-8 byteOffset 转换为 Java String 的 charOffset?

java - 前段时间为 Android/java

java - Hibernate 实体应该 Autowiring 还是 'manually' 实例化?

java - 依赖注入(inject)如何在 Cucumber 中工作?

java - 如何在 Spring 中 Autowiring 构造函数和属性

java - 从嵌入式 OSGi 框架使用 Log4j2

maven - 构建失败 : Version increase required: Failed to execute goal org. apache.felix :maven-bundle-plugin:3. 0.1:基线

osgi - 为什么 ConfigurationAdmin 规范使用自己的事件机制,而不是 EventAdmin?