springboot整合quzytz(簡單易使用複製即可)
pom
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency>
1 先配置一個jobFactory類 extends 繼承AdaptableJobFactory
@Component("jobFactory") public class MyJobFactory extends AdaptableJobFactory { @Autowired private AutowireCapableBeanFactory autowireCapableBeanFactory;
@Override protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception { // TODO Auto-generated method stub Object jobInstance = super.createJobInstance(bundle); autowireCapableBeanFactory.autowireBean(jobInstance); return jobInstance; }
2.建立quartz配置類
package test.conntroller.quaytz;
import org.quartz.spi.JobFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.quartz.CronTriggerFactoryBean; import org.springframework.scheduling.quartz.JobDetailFactoryBean; import org.springframework.scheduling.quartz.SchedulerFactoryBean;
@Configuration public class quzrtzConfig {
/** * 1.建立Job物件 */ @Bean public JobDetailFactoryBean getJobDetailFactoryBean(){ JobDetailFactoryBean factory = new JobDetailFactoryBean(); //關聯我們定義Job類 也就是我們需要定時的方法 factory.setJobClass(MyJob.class); return factory; } /** * 2.建立Trigger */ /*@Bean public SimpleTriggerFactoryBean getSimpleTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean){ SimpleTriggerFactoryBean factory = new SimpleTriggerFactoryBean(); //關聯JobDetail物件 factory.setJobDetail(jobDetailFactoryBean.getObject()); //重複間隔時間(毫秒為單位) factory.setRepeatInterval(5000); //重複次數 factory.setRepeatCount(4); return factory; }*/ @Bean public CronTriggerFactoryBean getSimpleTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean){ CronTriggerFactoryBean factory = new CronTriggerFactoryBean(); //關聯JobDetail物件 factory.setJobDetail(jobDetailFactoryBean.getObject()); //時間 factory.setCronExpression("0/3 * * * * ?"); return factory; } /** * 3.建立Scheduler物件 */ @Bean public SchedulerFactoryBean getSchedulerFactoryBean(CronTriggerFactoryBean triggerFactoryBean,JobFactory jobFactory){ SchedulerFactoryBean factory = new SchedulerFactoryBean(); //關聯trigger factory.setTriggers(triggerFactoryBean.getObject()); //重新JobFactory factory.setJobFactory(jobFactory); return factory; } }
3.建立Myjob類 implements 實現Job的execute
exceute裡就是我們定時執行的程式碼
public class MyJob implements Job{
public void execute(JobExecutionContext context) throws JobExecutionException { //System.out.println(new Date()+"1111111"); } }