SpringBoot整合Quartz

Quartz
	什么是quartz
		是一个完全由java编写的开源作业调度框架,为在java应用程序中进行作业调度提供了简单却强大的机制
	作用
		在某一个有规律的时间点干某件事情
		quartz就是来干这样的事情的,你给他一个触发条件定义,它负责到了时间点,触发相应的job起来干活,并且时间的触发条件可以非常复杂,复杂到需要一个专门的框架来实现
	核心概念
		job
			任务,具体要执行的任务逻辑(内容)
		jobdetail
			任务详情:定义一个可执行的调度程序,job是这个可执行程序调度程序所要执行的内容
		Tirgger
			任务触发器:定义任务执行的方式。间隔
		scheduler
			任务调度器:控制所有的任务调度(Tirgger与JobDetail组合)
			两个组件
				JobStore
					存储运行时信息的
				ThreadPool
					线程池
	Trigger四种实现方式
		SimpleTrigger
			指定从某一个时间开始,以一点的时间间隔执行的任务
			属性
				repeatinterval 重复间隔
				repeatCount 重复次数
		CalendarIntervalTrigger
			类似SimpleTrigger,指定从某一个小时开始,以一定的时间间隔执行的任务,支持单位有,秒、分钟、小时、天、月、年、星期。
			属性
				interval:执行间隔
				inervalUnit:执行间隔的单位
			优势
				更方便
				支持不是固定长度的间隔
			劣势
				精度只能到秒
		DailyTimeIntervalTrigger
			指定每天的某个时间段内,以一定的时间间隔执行任务,并且它可以支持指定星期,它适合的任务类似于:每天的9-18:00,每隔70秒执行一次,并且只要是周一到周五执行
			属性
				startTimeOfDay 每天开始时间
				endTimeofday 每天结束时间
				interval 时间间隔
				intervalUnit 执行间隔单位
				repeatcount 重复次数
		CronTrigger
			适合于更复杂的任务,它支持类型于Linux Cron语法 ,基本上它覆盖了以上的三个Triggerd 绝大部分能力但不是全部,当然,也更难理解和掌握,它适合的任务类似每天0:00,9:00,18:00各执行一次
			属性
					Cron表达式
					表达式参数
						
	Quartz扩展
		集群
		Jobstore
		RMI
		监听器
		插件

那么开始动手使用吧!
先导入依赖:

		<-- quartz依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-quartz</artifactId>
		</dependency>

其实使用非常的简单,先创建一个Job类我们让他来工作:

package com.amt.job;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.amt.dao.OutpatientReservationNumberMapper;

import lombok.extern.slf4j.Slf4j;

/**   
 * @Title: JonTwo.java 
 * @Package com.amt.job 
 * @Description: TODO(测试Job) 
 * @author lys 
 * @date 2019年7月22日 下午6:28:43 
 * Copyright (c) ©1994-2019 Scjydz.com All Rights Reserved.
 */
 //这个注解必须加上,把它交给容器管理
@Component
@Slf4j
public class TestJob {
	//这里可以注入你的持久层接口
	//@Autowired
	//private OutpatientReservationNumberMapper numberMapper;
	
	//调度任务执行
	@Scheduled(cron = "0 0 1 * * ? ") // 每天晚上点1点00开始执行每天执行一次
	public void execute() {
		log.info("每天晚上1点执行》》》》》》》》》》");
		//这里写你自己的业务逻辑
		//numberMapper.deleteAllDoctor();
		log.info("任务已执行完》》》》》》》》》》");
	}
	
}

这里是使用的Cron表达式调度任务,现在这种方式非常方便且又灵活,这里补充一张图来说明:
在这里插入图片描述
附上生成表达式的地址:http://cron.qqe2.com/
在这里插入图片描述
这样我们的任务就已经创建完成了,别忘了在我们的Job类上加上@Component注解哟!不然任务是不生效的。
然后我们还得在Boot启动类上加上:@EnableScheduling

package com.amt;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.scheduling.annotation.EnableScheduling;
import lombok.extern.slf4j.Slf4j;

/**
 * @Title: AppOutpatientApplication.java 
 * @Package com.amt 
 * @Description: TODO(启动类) 
 * @author lys  
 * @date 2019年7月11日 上午10:52:49 
 * Copyright (c) ©1994-2019 Scjydz.com All Rights Reserved.
 */
@SpringBootApplication
@EnableScheduling
@Slf4j
public class Application extends SpringBootServletInitializer {

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(Application.class);
	}
	
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
		log.info("服务启动完成。");
	}

}

这样我们的调度任务就完成了!非常的简单实用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值