@Bean
public A getA() {
return new A();
}
// case 1:
@Bean
public B getB() {
A a = getA();
return new B(a);
}
// case 2:
@Bean
public B getB(A a) {
return new B(a);
}
看到好多代码都是case1的写法,自己调用getA()得到的A不就不受spring容器管理了吗?
不是应该case2的写法才正确吗?
自己调用getA()其实是重新new出一个对象并不是从spring容器里获取的
受spring容器管理,case1和case2只是一个是内部进行声明A类型,一个是通过传参的方式,需要外部声明A传入,都是通过spring注入方式使用A类型变量。
这种问题你不能写代码测试一下?我测试出来就是同一个对象,配置类运行时应该被增强了