SpringBoot整合quarzt实现定时任务调度并使用xml文件配置调度时间

wylc123 1年前 ⋅ 1661 阅读

1.首先引入jar包:

<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>4.1.6.RELEASE</version>
		</dependency>
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>2.2.1</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz-jobs -->
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz-jobs</artifactId>
			<version>2.2.1</version>
		</dependency>
Markup

2.配置xml文件:quartz-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"
	   xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">

	<!-- 配置Job类 -->
	<bean id="DemoJob" class="kbaseSync.KbaseJob"></bean>
	<!--添加数据到数据库任务-->
	<!-- 配置JobDetail -->
	<bean id="springQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<!-- 执行目标job -->
		<property name="targetObject" ref="DemoJob"></property>

		<!-- 要执行的方法 -->
		<property name="targetMethod" value="execute"></property>
	</bean>
	<!-- 配置tirgger触发器 -->
	<bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<!-- jobDetail -->
		<property name="jobDetail" ref="springQtzJobMethod"></property>

		<!-- cron表达式,执行时间 每20分钟执行一次 -->
		<property name="cronExpression" value="0/20 * * * * ?"></property>
	</bean>

	<!--定时删除数据库数据任务-->
	<!-- 配置Job类 -->
	<bean id="DailyReportJob" class="kbaseSync.DailyReportJob"></bean>
	<!-- 配置JobDetail -->
	<bean id="springQtzJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<!-- 执行目标job -->
		<property name="targetObject" ref="DailyReportJob"></property>
		<!-- 要执行的方法 -->
		<property name="targetMethod" value="execute"></property>
	</bean>
	<!-- 配置tirgger触发器 -->
	<bean id="cronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<!-- jobDetail -->
		<property name="jobDetail" ref="springQtzJob"></property>
		<!-- cron表达式,执行时间每天0点执行一次 -->
		<!-- 可以根据自己的需求指定执行时间 -->
		<property name="cronExpression" value="0 0,58 16 * * ?"></property>
	</bean>
	<!-- 配置调度工厂 -->
	<bean id="springJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="cronTrigger1"></ref>
				<ref bean="cronTrigger2"></ref>
			</list>
		</property>

	</bean>
</beans>
Markup

3、创建任务Job类(自定义类)

package kbaseSync;

import kbaseSync.Core.DailyReportProgram;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 每日报告生成
 * @author SongBin on 2019/9/5.
 */
public class DailyReportJob {

	private Logger log = LoggerFactory.getLogger(DailyReportJob.class);
	private DailyReportProgram dailyReportProgram = new DailyReportProgram();

	public void execute() throws JobExecutionException {

		log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));

		dailyReportProgram.sync();
	}
}
Java

4、配置Springboot启动类

在Springboot启动类上添加注解

@ImportResource("classpath:quartz-config.xml")
到这里就是所有配置

/**
 * @author SongBin on 2019/9/6.
 */
package kbaseSync;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;

@SpringBootApplication
@ImportResource("classpath:quartz-config.xml")
public class SyncApplication {
    public static void main(String[] args) {
        SpringApplication.run(SyncApplication.class, args);
    }
}
Java

 


注意:本文归作者所有,未经作者允许,不得转载

更多内容请访问:IT源点
相关文章推荐

全部评论: 0

    我有话说: