问题
当我们在应用Quartz的时候,在Job中依赖注入Spring Bean的时候会出现依赖注入对象为null,那么这个时候需要怎么解决这个问题呢?
答案
只需要在execute方法中加入SpringBeanAutowiringSupport.processInjectBasedOnCurrentContext(this)就可以解决这个问题。代码如下
public class TaskJob implements Job {
private final Logger logger = LoggerFactory.getLogger(TaskJob.class);
@Autowired
private TaskService taskService;
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
//重点是加入这句代码,那么就可以向该类中依赖注入spring bean了
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
try {
taskService.scanVsphereById(jobExecutionContext.getJobDetail().getKey().getName());
} catch (Exception e) {
e.printStackTrace();
}
logger.info(jobExecutionContext.getJobDetail().getKey().getName() +
"成功执行定时任务-------------------------------------------------");
}
}