Spring / Spring Boot 集成Quartz
Spring 集成Quartz
添加依赖
在Spring 项目中添加依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.3.14</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.14</version>
</dependency>
编写Job例子
MyJob.java
package cn.flowboot.quartz.job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
import java.time.LocalDate;
/**
* <h1></h1>
*
* @version 1.0
* @author: Vincent Vic
* @since: 2022/01/26
*/
public class MyJob extends QuartzJobBean {
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
System.out.println(LocalDate.now()+" 正在执行定时任务");
}
}
Spring Schema 配置方式
spring-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:reg="http://www.dangdang.com/schema/ddframe/reg"
xmlns:job="http://www.dangdang.com/schema/ddframe/job"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="jobDetail1" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
<property name="jobClass" value="cn.flowboot.quartz.job.MyJob"/>
<property name="name" value="myjob1"/>
<property name="group" value="group1"/>
</bean>
<bean id="trigger1" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
<property name="jobDetail" ref="jobDetail1"/>
<property name="name" value="trigger1"/>
<property name="group" value="group1"/>
<property name="repeatInterval" value="5"/>
</bean>
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="trigger1"/>
</list>
</property>
</bean>
</beans>
Bean 方式配置
MyJob2.java 这里无需继承QuartzJobBean
package cn.flowboot.quartz.job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.time.LocalDate;
/**
* <h1></h1>
*
* @version 1.0
* @author: Vincent Vic
* @since: 2022/01/26
*/
public class MyJob2 {
public void execute() {
System.out.println(LocalDate.now()+" My Job 2正在执行定时任务");
}
}
添加myJob2,jobDetail2,trigger2的bean ,在schedule中添加触发事件
<bean id="myJob2" class="cn.flowboot.quartz.job.MyJob2"/>