Quartz的Job中实现对SpringBean的依赖注入

问题

当我们在应用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() +
                "成功执行定时任务-------------------------------------------------");
    }
}

发布了94 篇原创文章 · 获赞 55 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/Suubyy/article/details/87008641