最近在做项目时,因为业务需要,得动态添加定时任务,在网上找了一些资料之后顺利集成。但是发现在Job实现类里Autowired自动注入dao时,dao为null,导致无法对数据库进行修改。遂又去网上搜索解决方案。后来找到两种,均未能成功。百思不得其解时,灵机一动,想起在别的项目中看过用ApplicationContext.getBean方法可以注入,试了一下,果然可行。
写一个SpringContextUtil工具类
@Component
public class SpringContextUtils implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtils.applicationContext = applicationContext;
}
public static Object getBean(String name) {
return applicationContext.getBean(name);
}
public static <T> T getBean(String name, Class<T> requiredType) {
return applicationContext.getBean(name, requiredType);
}
public static <T> T getBean(Class<T> cls) {
return applicationContext.getBe