Java springpick最高优先级bean
使用如下配置:Java springpick最高优先级bean,java,spring,Java,Spring,使用如下配置: class MySpringConfig { @Bean // Lowest priority @Qualifier("pri1") Bean beanPri1() { ... } @Bean // Medium priority @Qualifier("pri2") Bean beanPri2() { ... } // @Bean // Highest priority // @Qualifier("pri3") // Bean beanPri
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;
}
还有这样的服务:
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
给出的)进入@限定符
服务。beanPri1
- 无论最高优先级的bean进入
服务。无论优先级最高的bean是什么
- 无更改:
Service.bean最高优先级应为
beanPri2
- 取消注释
:beanPri3
Service.bean最高优先级应为
beanPri3
- 评论
:beanPri2
服务。bean最高优先级应为
beanPri1
@Order
仅用于在注入集合
类型的属性时对它们进行排序-因此优先级较高的属性优先。我是对的还是有办法告诉它只注入一个?这通常是通过使用bean上方的@Profile
来解决的。由于您无法在运行时更改实例(假设您的代码示例),因此它似乎是最合适的。为不同的配置文件定义一个bean,并在启动时决定使用哪个bean。另一种方法是自动连线List
a使用自定义方法查找“最佳”实例,我认为这不太可取,因为在自动连线的每个位置都必须这样做。如果我是你的话,我会看看限定符注释是如何实现的,并且会对我的自定义HighestOrder注释执行相同的操作,该注释以最高优先级而不是名称解析bean。。。