假设我在Spring容器中定义了一个bean(例如BeanA),并且此bean被注入(inject)到对象中。 (例如BeanAUser)
在运行时,我可以使用另一个bean实例替换spring容器中的原始BeanA吗?并且还将这个新的bean实例重新注入(inject)BeanAUser中以替换原始的BeanA吗?
最佳答案
使用代理可以轻松实现。创建接口(interface)的委派实现,并切换要委派的对象。
@Component("BeanA")
public class MyClass implements MyInterface {
private MyInterface target;
public void setTarget(MyInterface target) {
this.target = target;
}
// now delegating implementation of MyInterface methods
public void method1(..) {
this.target.method1(..);
}
..
}