Java 在基于注释的Spring Boot应用程序中实现插件体系结构
我想在Spring Boot应用程序中实现插件架构。让我解释一下我的情况。我有一个主应用程序,它启动服务器,管理安全等。这个应用程序就像我最终产品的根,它将包括这个根应用程序和添加到它的其他插件 现在,这些插件就是SpringBoot应用程序本身,我可以通过在特定路径中动态搜索JAR或将JAR作为库添加到项目依赖项来将其添加到根应用程序中 插件有自己的配置,就像在主根应用程序中运行的应用程序一样。比方说,如果根应用程序运行服务器,插件应用程序可能拥有为我的产品提供功能的所有控制器(端点)、bean等 这是前提,现在我想知道的是Java 在基于注释的Spring Boot应用程序中实现插件体系结构,java,spring,spring-mvc,spring-boot,plugin-architecture,Java,Spring,Spring Mvc,Spring Boot,Plugin Architecture,我想在Spring Boot应用程序中实现插件架构。让我解释一下我的情况。我有一个主应用程序,它启动服务器,管理安全等。这个应用程序就像我最终产品的根,它将包括这个根应用程序和添加到它的其他插件 现在,这些插件就是SpringBoot应用程序本身,我可以通过在特定路径中动态搜索JAR或将JAR作为库添加到项目依赖项来将其添加到根应用程序中 插件有自己的配置,就像在主根应用程序中运行的应用程序一样。比方说,如果根应用程序运行服务器,插件应用程序可能拥有为我的产品提供功能的所有控制器(端点)、bea
您的最后一点可能是一个棘手的问题,因为您必须考虑有多个服务可以满足相同的请求。再次学习OSGi,这些服务通常是通过一个公共接口定义的,并且实现具有类似优先级的东西,这将指示如果有多个服务,应该使用哪个服务。当然,您可以定义其他方法来选择其中一种。
有两种可能的选择:这篇文章是三年前写的。然而,我想为那些为类似场景寻找解决方案的人回答这个问题。 似乎pf4j是一个适合您的插件框架。除了支持本机应用程序外,它还具有spring-pf4j,所以您可以在spring中使用它
URL:我将实现类似的插件系统。你找到解决方案了吗?我真的建议不要使用OSGi方式,它在传统的JAR中工作得很好,但在spring中,它一直给我带来奇怪的错误,至少在Java 9中,我还没有找到在运行时检测插件的方法,所以是的,需要重新启动。可能想看看这个:-如果有人想使用pf4j,你可能还想看看。它构建在pf4j之上,提供了与SpringBoot更好的集成。