spring 定時任務 quartz 基於 MethodInvokingJobDetailFactoryBean 實現
依賴包 如下
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
任務配置類 QuartzConfig
package quarttest.demo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean; import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean; import java.util.Date; @Configuration public class QuartzConfig { /** * 在 Quartz 配置類中,主要配置兩個東西:1. JobDetail 2. Trigger * JobDetail 有兩種不同的配置方式: * * 1. MethodInvokingJobDetailFactoryBean 此處是基於方法1 的 即 MethodInvokingJobDetailFactoryBean * * 2. JobDetailFactoryBean * @return */ //第一個定時任務 @Bean MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean() { MethodInvokingJobDetailFactoryBean bean = new MethodInvokingJobDetailFactoryBean(); bean.setTargetBeanName("myJob1"); bean.setTargetMethod("sayHello"); return bean; } @Bean SimpleTriggerFactoryBean simpleTriggerFactoryBean() { SimpleTriggerFactoryBean bean = new SimpleTriggerFactoryBean(); bean.setStartTime(new Date()); // bean.setRepeatCount(5); 設置重復次數 bean.setJobDetail(methodInvokingJobDetailFactoryBean2().getObject()); bean.setRepeatInterval(3000); //毫秒 return bean; } //第二個定時任務 @Bean MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean2() { MethodInvokingJobDetailFactoryBean bean2 = new MethodInvokingJobDetailFactoryBean(); bean2.setTargetBeanName("myJob1"); bean2.setTargetMethod("Hello"); return bean2; } @Bean SimpleTriggerFactoryBean simpleTriggerFactoryBean2() { SimpleTriggerFactoryBean bean = new SimpleTriggerFactoryBean(); bean.setStartTime(new Date()); // bean.setRepeatCount(5); 設置重復次數 bean.setJobDetail(methodInvokingJobDetailFactoryBean().getObject()); bean.setRepeatInterval(3000); return bean; } }
任務類
package quarttest.demo; import org.springframework.stereotype.Component; import java.util.Date; @Component public class MyJob1 { //任務一 public void sayHello() { System.out.println("MyJob1>>>"+new Date()); } //任務二 public void Hello() { System.out.println("Hello========== "+new Date()); } }
