Spring Boot应用程序刷新无法正确处理静态引用

时间:2019-02-17 14:31:14

标签: spring-boot applicationcontext

我有一个在Eclipse中运行的spring boot Web应用程序。使用spring eclipse插件,可以在更改代码后重新启动。但是我已经看到,当使用ApplicationContextAware类保存对Spring上下文的静态引用时,在应用程序重新启动时这些引用不会得到更新。

我有以下课程

@Component
public class ApplicationContextAwareClass implements ApplicationContextAware {
    private static ApplicationContext context;
    @Override
    public void setApplicationContext(ApplicationContext context) throws BeansException {
    ApplicationContextAwareClass.context = context;
   }

  public static ApplicationContext  getContext(){
    return context; 
  }
}
public class MyClass {
  public void doSomething(){
    ApplicationContext appcon = ApplicationContextAwareClass.getContext();
    //after a restart, appcon still pulls the old, now closed, context
  }
}

重新启动应用程序后,即使Spring实际上已经创建了新的上下文并存储在静态字段中,第二类仍在接收旧的上下文。

0 个答案:

没有答案