在下面的场景中,@Bean 或@Component 的优先级是什么?
What is given priority in below scenario @Bean or @Component?
我正在学习 Spring 的概念并且遇到了@Bean 和@Component 注释。我想知道在以下情况下会发生什么:
@Configuration
class ConfigClass {
@Bean
public ComponentClass ComponentClass() {
return new ComponentClass(someDependency1, someDependency2, someDependency3);
}
}
@Component
class ComponentClass{
private SomeDependency1 sd1;
private SomeDependency2 sd2;
private SomeDependency3 sd3;
public ComponentClass(SomeDependency1 sd1, SomeDependency2 sd2, SomeDependency3 sd3) {
/* initialize here */
}
}
我已经将 ComponentClass 声明为 @Component,这意味着它现在是一个 spring bean。但是我在configclass中也单独为它定义了一个@Bean。
默认情况下,这些 bean 中的哪些将被实际使用,因为 Spring 是单例?
删除@Component 后会发生什么?
Spring 会发现错误并在应用程序启动期间抛出 NoUniqueBeanDefinitionException
。
如果您删除 @Component 注释,它将按预期工作,@Bean 将用于初始化。
我正在学习 Spring 的概念并且遇到了@Bean 和@Component 注释。我想知道在以下情况下会发生什么:
@Configuration
class ConfigClass {
@Bean
public ComponentClass ComponentClass() {
return new ComponentClass(someDependency1, someDependency2, someDependency3);
}
}
@Component
class ComponentClass{
private SomeDependency1 sd1;
private SomeDependency2 sd2;
private SomeDependency3 sd3;
public ComponentClass(SomeDependency1 sd1, SomeDependency2 sd2, SomeDependency3 sd3) {
/* initialize here */
}
}
我已经将 ComponentClass 声明为 @Component,这意味着它现在是一个 spring bean。但是我在configclass中也单独为它定义了一个@Bean。
默认情况下,这些 bean 中的哪些将被实际使用,因为 Spring 是单例?
删除@Component 后会发生什么?
Spring 会发现错误并在应用程序启动期间抛出 NoUniqueBeanDefinitionException
。
如果您删除 @Component 注释,它将按预期工作,@Bean 将用于初始化。