热交换Spring Beans在运行时

时间:2018-03-21 13:29:38

标签: java spring

我希望有可能在运行时交换spring bean。我使用HotSwappableTargetSource找到了解决方案,但我对此解决方案不满意。当项目具有100-200个可以进行热交换的bean时,我将不得不使用Proxy实现相同的HotSwappableTargetSources。我正在寻找更通用的解决方案。

1 个答案:

答案 0 :(得分:0)

热交换有两种。

1。通过IDE使用JPDA调试器进行热交换(也称为How-Code-Replace)

如果您调试类并希望立即更改代码,而无需对应用程序的生命周期进行进一步操作。对于Spring-Bean(aka CDI-Bean),这是不可能的。一种解决方法是使用这样的Spring-Bean:

@Component
public class MyComponent {
  private HotSwappable other = new HotSwappable();

  @Transactional
  public void notHotSwappable(){
    other.hotSwappableMethod();
  }
}

HotSwappable类类似

public class HotSwappable {
  public void hotSwappableMethod(){
    System.out.println("This output can be changed in runtime by debugger if connected.");
  }
}

您可以更改hotSwappableMethod的内容。

2。春季豆类的HotSwap作为应用程序的独立自然流程的一部分

您可以实现HotSwappableTargetSource以便在运行时切换实现。

3。更通用

更通用的解决方案是使用Composite Pattern

  

(...)代表部分整体层次结构(...)

相关问题