gpt4 book ai didi

java - 在@Component和@Configuration中使用@Bean

转载 作者:行者123 更新时间:2023-12-02 11:17:33 25 4
gpt4 key购买 nike

@Configuration
public class Config {

@Bean
public Student getStudent() {
return new Student();
}
}
<小时/>
@Component
public class Config {

@Bean
public Student getStudent() {
return new Student();
}
}

我想知道使用上述两种方法将bean初始化为工厂的区别。

最佳答案

@Component@Configuration bean 方法注册之间存在根本区别。

如果您在@Configuration内声明@Bean方法,它将被包装到CGLIB包装器中。进一步调用 @Bean 方法返回相同的 bean 实例。

即:

@Configuration
class A {
@Bean
BeanX getBeanX() { ... };

@Bean
BeanY getBeanY() {
return new BeanY(getBeanX()); // You got the same bean instance from getBeanX() method, no matter how many times you call it
// This instance is the container singleton instance
}
}

如果使用@Component,每次调用bean方法时,都会创建另一个bean:

@Component
class B {
@Bean
BeanX getBeanX() { ... };

@Bean
BeanY getBeanY() {
return new BeanY(getBeanX()); // You got the different bean instance every time you call it
// This getBeanX() instance is different from container singleton instance
}
}

关于java - 在@Component和@Configuration中使用@Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50169376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com