My Spring Boot Application具有内容管理系统。我希望能够动态加载新组件,而无需重启应用程序。示例组件可以是加载新的视频播放器组件或广告组件。每个组件都可能包含自己的控制器和视图。
推荐的模式是什么,以及有什么好的框架可以帮助解决这个问题? OSGi是一种选择吗?
答案 0 :(得分:2)
我担心没有100%的解决方案。可能还有一些选择;让我强调以下三点:
有Spring factories,一种(自动)配置bean的方法。
另一个有趣的方法是Spring Boot如何自行处理扩展 - 通过拥有自己的 spring-boot-starters ,如本文所述:https://blog.codecentric.de/en/2014/11/extending-spring-boot-five-steps-writing-spring-boot-starter/ ,结合Spring Factories,你可以
最像插件的解决方案是spring-plugin-project。但是看起来只支持加载,还缺少其他一些功能,如版本控制。所以你可能需要自己构建它。
所以主要的问题可能是在运行时卸载和更新这些东西,这导致我最后的观察:
总的来说,我的印象是拥有插件的概念与Spring Boot的概念有点相似,因为它是为微服务架构而设计的。所以添加的(插件)功能可能更像是一个单独的微服务(有自己的存储),由网关编排,这里让我突出一下基于spring-boot的JHipster项目来展示这样的想法。架构。