java - spring-boot > 隐式自动注册第 3 方 bean

标签 java spring spring-boot

这可能是一项不可能完成的任务,但这里...

是否可以通过(仅)将 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/

相关文章:

java - ISODate 无法从 Spring Boot JPA 存储库解析

Java:什么被认为更具可读性, "this"或没有 "this"

java Kafka生产者错误

java - 在 Java 中,为什么 instanceof 是关键字而不是方法?

java - Mule ESB 在 Callable 类之外读取 @Value 属性

spring - 如何使 AuditorAware 与 Spring Data Mongo Reactive 一起工作

java - 如何在单词之间添加分隔符?

java - 为什么不使用 @ControllerAdvice 中的通用异常处理程序?

java - 在 Spring Boot Controller 中反序列化 json 时 List<object> null

java - 如何允许单个方法使用多个 @JmsListener 目的地