您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Spring Boot:在Quartz作业执行中使用@Service

Spring Boot:在Quartz作业执行中使用@Service

SpringBeanAutowiringSupport使用Web应用程序上下文,在您的情况下不可用。如果需要在石英中使用弹簧管理的豆,则应使用spring提供的石英支架。这将为您提供对所有托管Bean的完全访问权限。有关更多信息,请参见http://docs.spring.io/spring/docs/current/spring- framework- reference/html/scheduling.html上spring docs的石英部分。另请参见下面的示例,将石英与弹簧托管的豆一起使用。示例基于您的代码。因此,您可以使用以下替代弹簧来更改第一个代码段(完成石英初始化)。

创建工作细节工厂

@Component
public class ScheduledActionRunnerJobDetailFactory extends JobDetailfactorybean {

    @Autowired
    private ScheduleService scheduleService;

    @Override
    public void afterPropertiesSet() {
       setJobClass(ScheduledActionRunner.class);
       Map<String, Object> data = new HashMap<String, Object>();
       data.put("scheduleService", scheduleService);
       setJobDataAsMap(data);
       super.afterPropertiesSet();
   }
}

创建触发器工厂

@Component
public class Actioncrontriggerfactorybean extends crontriggerfactorybean {

   @Autowired
   private ScheduledActionRunnerJobDetailFactory jobDetailFactory;

   @Value("${cron.pattern}")
   private String pattern;

   @Override
   public void afterPropertiesSet() throws ParseException {
       setCronExpression(pattern);
       setJobDetail(jobDetailFactory.getObject());
       super.afterPropertiesSet();
   }

}

最后创建SchedulerFactory

@Component
public class ActionSchedulerfactorybean extends Schedulerfactorybean {

   @Autowired
   private ScheduledActionRunnerJobDetailFactory jobDetailFactory;

   @Autowired
   private Actioncrontriggerfactorybean triggerFactory;

   @Override
   public void afterPropertiesSet() throws Exception {
       setJobDetails(jobDetailFactory.getObject());
       setTriggers(triggerFactory.getObject());
       super.afterPropertiesSet();
   }

}
Java 2022/1/1 18:17:08 有472人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶