java-Spring @Primary-如果主要存在,为什么要创建其他bean
作者:互联网
我不明白@Primary可以解决什么问题.
文档说:
Indicates that a bean should be given preference when multiple
candidates are qualified to autowire a single-valued dependency. If
exactly one ‘primary’ bean exists among the candidates, it will be the
autowired value.
示例代码:
@Configuration
class Configuration {
@Bean
@Primary
MyType bean1() {
return new MyType(1);
}
@Bean
MyType bean2() {
return new MyType(2);
}
}
示例:我有2个bean bean1和bean2,它们返回类型MyType的对象.其中一个bean1具有注释@Primary,因此当我将MyType类型的对象注入某个构造函数时,将注入bean1创建的对象.
那么,如果要注入主bean,为什么还要有两个相同类型的bean?什么意思什么时候以及如何使用未标注为primary的bean2?示例显示bean2是冗余的且未使用.
解决方法:
您仍然可以始终限定您真正想要的bean,这意味着不会总是选择主要的bean.
@Component
class MyComponent
{
public MyComponent(@Qualifier("bean2") MyType foo) { /*...*/ }
}
@Primary只是告诉Spring如果一个自动装配字段有两个或更多可能的候选者,则选择哪个bean.
标签:spring-boot,spring-config,spring,java 来源: https://codeday.me/bug/20191024/1924106.html