首页 > 解决方案 > 为候选人挑选弹簧多个级别

问题描述

我有一个可以通过多种方式初始化的 bean,例如:

即像这样的例子:

class SpringConfig {
  // Priority 1
  @Bean
  User user() { ... }

  // Priority 2
  @Bean
  @Profile("profile1")
  User user() { ... }

  // Priority 3
  @Bean
  User user(@Value("user") { ... }
}

使用上述配置,应该选择具有“优先级 1”的用户。注释掉该 bean,如果启用了“profile1”,则应该选择具有“优先级 2”的用户。否则(“profile1”未激活或该 bean 被注释掉),它应该使用“user”环境变量以“优先级 3”初始化用户。

我认为@Primary不会在这里工作,因为有两个以上的候选人。

可能有更多或不同种类的级别或逻辑来选择它们,所以这是一个关于如何构建 Spring 配置以指导 Spring 选择正确 bean 的更普遍的问题。

如果这很重要,我不一定要保持相同的 Spring 配置布局 - 更多地寻找有关如何在此处正确执行操作的指导。

标签: javaspring

解决方案


推荐阅读