JavaSpring选择最高优先级bean
使用这样的配置:
class MySpringConfig {
@Bean // Lowest priority
@Qualifier("pri1")
Bean beanPri1() { ... }
@Bean // Medium priority
@Qualifier("pri2")
Bean beanPri2() { ... }
// @Bean // Highest priority
// @Qualifier("pri3")
// Bean beanPri3() { ... }
}
还有这样的服务:
@Service
class MyService {
@Autowired
@Qualifier("pri1")
Bean beanPri1;
@Autowired
Bean beanWhateverTheHighestPriIs;
}
是否可以告诉Spring注入:
beanPri1
(因为这是由@Qualifier
给出的)变成Service.beanPri1
- 不管最高优先级的bean是什么
Service.beanWhateverTheHighestPriIs
使用注释或类似的东西,可以相对容易地跨配置和不同的bean集重用
使用上述配置并执行以下更改的示例:
- 没有变化:
Service.beanWhateverTheHighestPriIs
应该是beanPri2
- 取消注释
beanPri3
:Service.beanWhateverTheHighestPriIs
应该是beanPri3
- 评论
beanPri2
:Service.beanWhateverTheHighestPriIs
应该是beanPri1
# 1 楼答案
可以使用@Order annotation告诉spring首先使用哪个
# 2 楼答案
另一种方法是使用@Value注释和表达式来解析有序bean的集合,然后使用[0]返回具有最高顺序的bean