【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】
【定时任务】
市面上流行的定时任务技术:【当时】
创建一个新的模块工程
依赖都不勾,自己加
直接创建,上来先把SpringBoot 的版本改掉
OK,一个全新的 SpringBoot 工程
新建一个类
package com.dingjiaxiong;import java.util.Timer;
import java.util.TimerTask;/*** ClassName: TimerTaskApp* date: 2022/10/22 13:19** @author DingJiaxiong*/public class TimerTaskApp {public static void main(String[] args) {Timer timer = new Timer();TimerTask task = new TimerTask() {@Overridepublic void run() {System.out.println("Timer task run...");}};timer.schedule(task,0,2000); //当前程序启动后立即执行,每2s执行一次}
}
直接运行
效果很明显
【这就是Java 内部的实现方式】【但是毕竟还是不专业】
这就催致了 Quartz 和 Spring Task的出现
【相关概念】
【导入坐标】
org.springframework.boot spring-boot-starter-quartz
【创建工作】
package com.dingjiaxiong.quartz;import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;/*** ClassName: MyQuartz* date: 2022/10/22 13:42** @author DingJiaxiong*/public class MyQuartz extends QuartzJobBean {//实现抽象方法@Overrideprotected void executeInternal(JobExecutionContext context) throws JobExecutionException {//编写具体要干的事儿System.out.println("Quartz task run...");}
}
这就是一个普通的Java 对象
【进行配置】
创建配置类
package com.dingjiaxiong.config;import com.dingjiaxiong.quartz.MyQuartz;
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** ClassName: QuartzConfig* date: 2022/10/22 13:46** @author DingJiaxiong*/@Configuration
public class QuartzConfig {//打印工作的明细@Beanpublic JobDetail printJobDetail(){//绑定具体的工作return JobBuilder.newJob(MyQuartz.class).storeDurably().build();}//触发器@Beanpublic Trigger printJobTrigger(){//绑定对应的工作明细ScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?"); //从0秒开始,每5s执行一次return TriggerBuilder.newTrigger().forJob(printJobDetail()).withSchedule(scheduleBuilder).build();}}
这样就OK了,当我们启动服务器,加载到这个配置类,定时任务就开始了
直接运行!
OK, 每隔5s 打印一次,为了效果明显,笔者改下,每秒钟打印一次
OK, 这样就很明显了
【简单的整合就是这样】
回顾一下
【可以感觉到还是很麻烦啊,能不能简化?】