Spring机制类似于OSGI / Eclipse扩展点

时间:2012-01-10 17:42:18

标签: java eclipse spring plugins osgi

我们写了一个框架,它使用了引擎盖下的弹簧。这个框架由两个应用程序使用。可以使用运行的application1 OR application2 OR application1和application2配置生产服务器。

现在我正在寻找一种类似于OSGI扩展点思想的弹簧机制,这样每个应用程序都可以“贡献”到框架,而不需要列出所有应用程序的配置文件。

完整的项目结构(简化; - )):

框架:A,IPlugin,A.xml

应用程序1:B扩展IPlugin,b.xml

应用程序2:C扩展IPlugin,c.xml

Explenation: “A”使用IPllugin列表,如果必须实现特定任务,将会调用该列表。

我只找到了将A声明为原型并将“B”和“C”设置为属性的弹簧方式。因此,我必须在A.xml中明确列出。但我想在b.xml和c.xml中配置贡献。

问题:

  • 如果创建了一种特殊类型的bean的实例,是否有可能修改spring?

  • 是否有类似于开箱即用的OSGI / Eclipse扩展点的东西?

  • 还有其他建议吗?

3 个答案:

答案 0 :(得分:0)

看看Spring Dynamic Modules。引言的第一行说明了一切:

  

用于OSGi(tm)服务平台的Spring Dynamic Modules项目可以轻松构建在OSGi框架中运行的Spring应用程序

答案 1 :(得分:0)

其他人建议将OSGi与Spring-DM或Blueprint一起使用。如果您认为这是您想要做的 - 我自己也不确定,因为我没有完全理解问题描述 - 那么您应该能够将OSGi框架嵌入到现有应用程序中(是的,甚至在Tomcat里面......)。

我写了一篇关于如何嵌入OSGi的blog post,可能会帮助您入门。但首先请查看OSGi与Spring-DM是否真的是您想要的,如果您需要帮助做出决定,请务必提出后续问题。

答案 2 :(得分:0)

我的解决方案是在框架项目中创建一个“注册表”,它将在春天创建,范围为“singleton”。因此,每个插件都可以为此注册表做出贡献,因为它在应用程序服务器的运行时期间可用于所有插件。由于每个插件都应该创建新的,我使用工厂的帮助,从spring-context创建新的插件实例。

更多细节可以在我写的一篇小文章中找到,可以是downloaded