use*_*ser 6 java spring spring-boot
我不明白什么问题@Primary可以解决。
该文件说:
[@Primary]指示当多个候选者有资格自动装配单值依赖项时,应优先考虑Bean。如果候选对象中仅存在一个“主” bean,它将是自动装配的值。
示例代码:
@Configuration
class Configuration {
@Bean
@Primary
MyType bean1() {
return new MyType(1);
}
@Bean
MyType bean2() {
return new MyType(2);
}
}
Run Code Online (Sandbox Code Playgroud)
范例:
我有2个bean,bean1并且bean2都带有type MyType。bean1具有@Primary注释,因此当我将类型的对象自动装配MyType到某些构造函数时,bean1将被选择。
如果总是选择主bean,为什么有两个相同类型的bean有用吗?我何时以及如何使用bean2未标注为主要的?该示例显示了bean2冗余且未使用。
您仍然可以始终限定您真正想要的 bean,这意味着不会总是选择主要的 bean。
@Component
class MyComponent
{
public MyComponent(@Qualifier("bean2") MyType foo) { /*...*/ }
}
Run Code Online (Sandbox Code Playgroud)
@Primary如果有两个或更多可能的候选者,只是告诉 Spring 优先考虑哪个 bean。你总是可以明确的。
此外,另一个构造函数可能采用所有MyTypes的列表。在这种情况下,两个 bean 都会自动装配。
@Component
class AnotherComponent
{
public AnotherComponent(List<MyType> allFoos) { /*...*/ }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1938 次 |
| 最近记录: |