Spring 引导,从同一接口和 class 定义 bean 时出错

Spring boot, error defining bean from same interface and class

我有一个定义邮政编码列表的 class。在我的应用程序 class 中,我定义了两个具有相同 class 和接口但具有来自 application.yml

的不同信息的对象
@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }


    @Bean
    @ConfigurationProperties(prefix = "catalog.city1")
    public CatalogConfiguration city1() {
        return new Catalog();
    }

    @Bean
    @ConfigurationProperties(prefix = "catalog.city2") 
    public CatalogConfiguration city2() {
        return new Catalog();
    }
}

当我想用那样的时候...

@Autowired
@Qualifier("city1")
CatalogConfiguration myCity;

...我收到此错误:

No qualifying bean of type [] is defined: expected single matching bean but found 2

我检查了所有可能的文档,但没有找到我的错误所在。

提前致谢

您定义了2个相同类型的bean。 Spring 引导将简单地覆盖第一个 bean 上的第二个 bean。您引用 bean 的方式是按名称。所以我想你需要做的是在 bean 定义中使用 @Qualifier,别名与 city1 和 city2 相同。或者像 @Bean('')

那样做