Spring-boot>隐式自动注册第三方bean

时间:2016-06-27 07:07:11

标签: java spring spring-boot

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

是否可以通过(仅)将jar添加到spring-boot应用程序的类路径来注册spring bean?

场景:我想创建一个非侵入式plugin 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

1 个答案:

答案 0 :(得分:5)

我认为在这种情况下,您会尝试添加一个注释为@ConditionalOnClass的spring自动配置,只有在给定的类位于类路径上时才进行评估。这个类可以注册bean,只要条件求值为true

就会被评估

以下是spring boot文档的相关部分:Creating your own auto-configuration