【发布时间】:2016-12-06 14:15:41
【问题描述】:
我有一个项目,其中包含许多使用 @Configuration 类(Spring Integration 和 Spring Batch 的东西)定义 bean 的小型库,我经常遇到问题,因为两个库都有一个同名的 bean。
可以:
- 为配置类的所有 bean 应用前缀
- 如果存在两个同名的 bean,则强制应用程序在启动时崩溃
- 使用其他解决方案,无需重新设计应用程序即可解决问题
【问题讨论】:
-
对于库,Spring Boot 的 AutoConfiguration 比
@Configuraitons 更适合组件扫描或导入。 AutoConfiguration bean 名称默认为不冲突的类的完全限定名称. -
不确定我是否理解,我不明白应该如何使用 AutoConfiguration 来创建自定义 Spring Integration ServiceActivators 或 Spring Batch Steps。
-
对于1,您可以使用
SpringApplicationBuilder将自己的BeanNameGenerator注册到SpringApplication。顺便说一句,AutoConfigurations 是普通的@Configurations,它们是由 Spring Boot 的@EnableAutoConfigurtion通过查找META-INF/spring.factories加载的,通常上面有@ConditionOn*和@ConfigurationProperties以便于定制。 -
简单而肮脏的方法是 @Bean(name = "fooBean") 并且您可以根据需要为每个库的每个 Bean 名称添加适当的前缀。如果我想出什么别的,我会回复的。
标签: spring spring-boot spring-java-config