Spring Boot中是否有可动态加载模块的模式?

我的Spring Boot应用程序具有内容管理系统。 我希望能够动态加载新组件,而无需重启应用程序。 示例组件可以是加载新的video播放器组件或广告组件。 每个组件都可能包含自己的控制器和视图。

推荐的模式是什么,以及什么是帮助处理这个问题的好框架? OSGi是一个选择吗?

我担心没有100%的解决方案。 可能有一些选择; 让我强调以下三点:

  1. 有Spring工厂 ,一种(自动)配置bean的方法。

  2. 另一个有趣的方法是Spring Boot如何自行处理扩展 – 通过拥有自己的spring-boot-starters ,如本文所述: https : //blog.codecentric.de/en/2014/11/extending- spring-boot-five-steps-writing-spring-boot-starter / ,结合Spring Factories,你可以

  3. 最像插件的解决方案是spring-plugin-project 。 但是看起来只支持加载,还缺少其他一些function,如版本控制。 所以你可能需要自己构建它。

所以主要的问题可能是在运行时卸载和更新这些东西,这导致我最后的观察:

总的来说,我的印象是插件的概念与Spring Boot的概念有点相似,因为它是为微服务架构设计的。 所以添加的(插件)function可能更像是一个单独的微服务(有自己的存储),由网关协调,这里让我突出一下基于spring-boot的JHipster项目,以展示这种架构的想法。