java - 在 Spring Boot 中动态加载 Spring Bean 和组件

标签 java spring spring-boot reflection

我正在尝试制作一个 Spring Boot 应用程序,其中插件在运行时从 JAR 动态加载。我还希望插件能够访问所有 Spring Boot 功能,最突出的是 Spring Data JPA。我已经弄清楚如何从 JAR 加载类,现在我的问题是如何“连接”加载的类(可能是 Beans、JpaRepositories 等)以“使用”我的主要 Spring Boot 应用程序。

我将来也可能想要拥有自己的注释系统,用于通过插件的主应用程序执行不同的操作(我知道如何使用反射来执行此操作),并且我希望在之后仍然能够执行此操作我设法把 Spring 的东西整理出来。

我想我必须以某种方式告诉 Spring 在扫描注释时从这些 JAR 中另外查找 @Component 和其他有意义的类。我尝试使用@ComponentScan的basePackageClasses属性,但这需要保持不变,并且硬编码这不是我想要做的事情的选项。

那么我想要实现的目标是否可能实现?如果是,那么我可以通过 Java 代码来完成它,还是可以通过编写一些 XML 配置来实现?

最佳答案

当您启动 Spring 应用程序时,Bean 会被加载并挂接到其上下文中,因此如果您想手动添加更多内容,您可能需要重新加载整个上下文,这对于 Spring Boot 应用程序来说可能不是一个好主意。

相反,我建议使用 spring 配置文件,这样您就可以定义不同的配置,并根据您的需要简单地启用您需要的配置。

了解更多信息:

https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-profiles

希望这有帮助!

关于java - 在 Spring Boot 中动态加载 Spring Bean 和组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62373032/

相关文章:

java - 标签移动时不调用paintComponent

java - 尝试从现有项目生成变更日志文件时出现错误 "Table name pattern can not be NULL or Empty"

apache - Spring Boot 和 Apache2 在同一服务器和端口上

java - Observable.notifyObservers 空指针异常

java - 将 java 日期转换为 Javascript 日期

java - Spring mvc + jsp页面中的安全css和js

ajax - Spring 和 Spring MVC 3.0 AJAX 集成

java - 具有单个域对象和多个数据源的 Spring Boot

java - Spring Boot 部署看不到 .class 文件

java - 如何在imageview上对图像进行灰度化?