5

是否可以自动将 Spring @Component(或其规范之一;例如@Repository)注册为 OSGi 服务?所以我可以在一个包中使用自动装配和 Spring 的所有其他好处和 OSGi 服务注册表在包之间进行通信?

更新:从这个讨论来看,使用标准蓝图似乎是不可能的,只能在 Eclipse Gemini 中使用。

4

3 回答 3

5

我假设您熟悉Eclipse Gemini Blueprint(以前称为 Spring Dynamic Modules,以前称为 Spring OSGi)?

<service>您使用-tag导出您的 bean 。我不确定你是否可以@Component自动导出所有等注释的bean。

于 2012-04-13T09:50:49.570 回答
1

在没有@AlexeyRomanov 建议的 hack 的情况下支持这一点的可能实现可能是BeanFactoryPostProcessor通过片段向 Gemini Blueprint 的扩展包添加一个实现。

该处理器可以在 BeanFactory 中创建所需的 OSGi 导出定义,并且它应该可以正常工作。

一个例子就是ServiceReferenceInjectionBeanPostProcessorSpringDM's/Gemini's extension 的形式,它允许您通过@ServiceReference注解注入 OSGi-Services。(虽然我链接了 Spring DM 这个类应该仍然存在于 Gemini 中,但我找不到他们的 javadoc 的直接链接)

于 2012-04-16T11:41:20.003 回答
0

讨厌的解决方法,仅适用于单例 bean:将实例存储在构造函数的静态字段中,并使用该字段的 getter 作为 Blueprint/iPOJO 工厂方法。

于 2012-04-13T10:45:19.380 回答