spring加载配置文件时,会自动调用ApplicationContextAware中的setApplicationContext,所以我们可以实现一个工具类继ApplicationContextAware并重写setApplicationContext 获取applicationContext 保存到工具类中,通过注解@Component 或其他 将工具类bean交给spring管理创建。这以后我们就能够方便在我们想要的地方通过applicationContext 获取想要的bean了。
项目当中的工具类:
@Component
public class ApplicationContextHolder implements ApplicationContextAware {
private static ApplicationContext applicationContext;
//@Override
public void setApplicationContext(ApplicationContext ctx) throws BeansException {
applicationContext = ctx;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
public static T getBean(Class clazz) {
return applicationContext.getBean(clazz);
}
@SuppressWarnings("unchecked")
public static T getBean(String name) {
return (T) applicationContext.getBean(name);
}
}
ApplicationContextAware接口:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package org.springframework.context;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.Aware;
public interface ApplicationContextAware extends Aware {
void setApplicationContext(ApplicationContext var1) throws BeansException;
}



