我有一个在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实际上已经创建了新的上下文并存储在静态字段中,第二类仍在接收旧的上下文。