这可能是一项不可能完成的任务,但这里...
是否可以通过(仅)将 jar 添加到 spring-boot
应用程序的类路径来注册 spring bean?
场景:我想创建一个非侵入式插件
jar,当它被导入到spring-boot
项目的类路径中时,将自动获取并提供服务(例如通过 RestController
)。
约束
- 我不想更改或重新配置现有的
spring-boot
应用程序(即没有额外的扫描路径或 bean 配置)。 - 我对目标
spring-boot
应用程序的包结构/扫描路径一无所知。
我想我希望默认情况下 Spring 扫描它自己的包结构(即 org.springframework.**
寻找数据库库等的存在)和我可以利用它 - 我没有任何运气(到目前为止)。
我设置了一个 example project in github ,以进一步阐明/说明我的示例和尝试。
** 解决方案附录 **
让它工作的这一点是添加以下文件,该文件指向 @Configuration
配置文件...
plugin-poc\src\main\resources\META-INF\spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.thirdpartyplugin.PluginConfiguration
最佳答案
我认为在这种情况下,您会尝试添加一个带有 @ConditionalOnClass
注释的 spring 自动配置仅当给定的类在类路径上时才被评估。此类可以注册 bean,并且仅在条件评估为真时才进行评估
这是 spring boot 文档的相关部分:Creating your own auto-configuration
关于java - spring-boot > 隐式自动注册第 3 方 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38047799/