假设我在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(..);
  }

  ..
}

08-04 16:32