quartz调度器执行两次问题
程序员文章站
2022-05-26 13:21:43
...
在项目中配置了调度器
quartz后,每次都执行两次,网查了一些办法说是配置文件加载两次的问题查找的原因是 ContextLoaderListener 和 DispatcherServlet 对应用上下文重复加载,导致问题出现。
经过排查了下 这个问题还是照样执行两次,所以我的问题以上解决不了,然后经过反复查看代码
发现
@Override protected void executeInternal(JobExecutionContext arg0) { log.info("RemindJob have bean started... "); ProjectTaskService projectTaskService = (ProjectTaskService) SpringHelper.getBean("cn.utec.server.manager.service.ProjectTaskService"); projectTaskService.duRemindJob(); }
代码中executeInternal方法是不能用SpringHelper.getBean这种形式来装配的,这样装配会加载两次service导致,把这行去掉 ,改成SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);然后@Autowired自动装配就可以了,大功告成