有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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
  • 取消注释beanPri3Service.beanWhateverTheHighestPriIs应该是beanPri3
  • 评论beanPri2Service.beanWhateverTheHighestPriIs应该是beanPri1

共 (2) 个答案

  1. # 2 楼答案

    另一种方法是使用@Value注释和表达式来解析有序bean的集合,然后使用[0]返回具有最高顺序的bean