Spring引导,从同一接口和类定义bean的错误

时间:2015-06-07 15:40:05

标签: java spring spring-boot

我有一个定义zipcodes列表的类。在我的Application类中,我定义了两个具有相同类和接口但具有不同来自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;

...我收到此错误:

  

没有定义类型为[]的限定bean:预期的单个匹配   豆但发现2

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

提前谢谢

1 个答案:

答案 0 :(得分:0)

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

那样做