| | |
| | | package com.ruoyi.inspectiontask.service.impl; |
| | | |
| | | import org.quartz.JobDataMap; |
| | | import org.quartz.Scheduler; |
| | | import org.quartz.spi.TriggerFiredBundle; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.config.AutowireCapableBeanFactory; |
| | |
| | | import org.springframework.context.ApplicationContextAware; |
| | | import org.springframework.context.annotation.Bean; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.core.io.ClassPathResource; |
| | | import org.springframework.scheduling.quartz.JobDetailFactoryBean; |
| | | import org.springframework.scheduling.quartz.SchedulerFactoryBean; |
| | | import org.springframework.scheduling.quartz.SpringBeanJobFactory; |
| | | |
| | | import javax.sql.DataSource; |
| | | |
| | | @Configuration |
| | | public class QuartzConfig { |
| | | @Autowired |
| | | private ApplicationContext applicationContext; |
| | | |
| | | // 假设已配置名为dataSource的数据源Bean |
| | | @Autowired |
| | | private DataSource dataSource; |
| | | |
| | | @Bean |
| | | public JobDetailFactoryBean jobDetail() { |
| | | JobDetailFactoryBean factory = new JobDetailFactoryBean(); |
| | | factory.setJobClass(TimingTaskJob.class); // 你的自定义 Job 类(需实现 Job 接口) |
| | | |
| | | // 1. 核心:设置为持久化任务(必须,否则不写入 qrtz_job_details 或重启清理) |
| | | factory.setDurability(true); |
| | | |
| | | // 2. 可选:任务执行崩溃后,重启时是否恢复执行(建议开启) |
| | | factory.setRequestsRecovery(true); |
| | | |
| | | // // 3. 可选:设置 JobDataMap(若需传递参数,参数需可序列化) |
| | | // JobDataMap jobDataMap = new JobDataMap(); |
| | | // jobDataMap.put("key", "value"); // 示例参数(若参数是自定义对象,需实现 Serializable) |
| | | // factory.setJobDataMap(jobDataMap); |
| | | |
| | | return factory; |
| | | } |
| | | |
| | | @Bean |
| | | public SchedulerFactoryBean schedulerFactoryBean() { |
| | |
| | | jobFactory.setApplicationContext(applicationContext); |
| | | schedulerFactory.setJobFactory(jobFactory); |
| | | |
| | | // 在schedulerFactoryBean()方法中添加 |
| | | schedulerFactory.setDataSource(dataSource); |
| | | // 其他配置... |
| | | return schedulerFactory; |
| | | } |
| | | |
| | | @Bean |
| | | public Scheduler scheduler() { |
| | | return schedulerFactoryBean().getScheduler(); |
| | | } |
| | | |
| | | // 自定义JobFactory,支持自动注入 |
| | | public static class AutowiringSpringBeanJobFactory extends SpringBeanJobFactory |
| | | implements ApplicationContextAware { |