如何在 Spring 上下文中创建两个相同 class 的 bean?
How can I create two beans of same class in a Spring Context?
我可以使用@Bean 注释在Spring 中声明一个bean。假设我在我的应用程序上下文中声明了两个 String 类型的 bean。
@Bean
public String country(){ return "India";}
@Bean
public String continent(){ return "Asia";}
在这种情况下,当 Spring 容器启动时会发生什么情况?会不会有什么错误?
可以在同一上下文中创建两个 spring beans。但它们需要在单独的@Configuration 文件中创建并单独访问。
您可以在同一上下文中拥有相同类型的 bean。两个 bean 将具有不同的名称(country
和 continent
),派生自方法名称:
@Configuration
public class Config {
@Bean
public String country() {
return "Germany";
}
@Bean
public String continent() {
return "Europe";
}
}
因此您可以按名称连接 bean:
@Autowired
String country;
@Autowired
String continent;
如果需要,您也可以明确定义名称:
@Bean(name = "myContinent")
public String continent() {
return "Europe";
}
然后使用 @Qualifier
:
连线
@Qualifier("myContinent")
@Autowired
String continent;
我可以使用@Bean 注释在Spring 中声明一个bean。假设我在我的应用程序上下文中声明了两个 String 类型的 bean。
@Bean
public String country(){ return "India";}
@Bean
public String continent(){ return "Asia";}
在这种情况下,当 Spring 容器启动时会发生什么情况?会不会有什么错误?
可以在同一上下文中创建两个 spring beans。但它们需要在单独的@Configuration 文件中创建并单独访问。
您可以在同一上下文中拥有相同类型的 bean。两个 bean 将具有不同的名称(country
和 continent
),派生自方法名称:
@Configuration
public class Config {
@Bean
public String country() {
return "Germany";
}
@Bean
public String continent() {
return "Europe";
}
}
因此您可以按名称连接 bean:
@Autowired
String country;
@Autowired
String continent;
如果需要,您也可以明确定义名称:
@Bean(name = "myContinent")
public String continent() {
return "Europe";
}
然后使用 @Qualifier
:
@Qualifier("myContinent")
@Autowired
String continent;