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('')
那样做
我有一个定义邮政编码列表的 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('')
那样做