采用一下羽佳风格~~~
① Spring Boot定时任务-@Scheduled的使用
pom文件 可能我冗余的东西比较多
<!-- POM文件Maven的基础配置文件,项目对象模型(Project Object Model)描述文件 -->
<!--
· 该项目是什么类型
· 该项目名称是什么
· 该项目的构建能自定义吗
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- POM 以下四个元素定义了该项目的唯一标识 -->
<groupId>com.chin</groupId>
<artifactId>01_hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<!-- POM 以下两个元素只是描述性元素,用于提供可阅读的名字 -->
<name>01_hello</name>
<url>http://maven.apache.org</url>
<!-- 手动添加的默认配置 -->
<!-- spring-boot-starter-parent 是Spring Boot核心启动器 -->
<!-- 包含了自动配置,日志和YAML等大量默认配置 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<!-- <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent> -->
<!-- POM 定义全局属性 -->
<properties>
<!-- 整个项目的字符编码 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- POM 项目依赖的框架-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
定时器类
package com.chin._scheduled.com;
import java.util.Date;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class scheduledDemo {
@Scheduled(cron="0/2 * * * * *")
public void scheduledMethod(){
System.out.println("定时器的触发测试。。。。。" + new Date());
}
}
启动类
package com.chin._scheduled;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
* Hello world!
*
*/
@SpringBootApplication
@EnableScheduling
public class App
{
public static void main( String[] args )
{
SpringApplication.run(App.class, args);
System.out.println( "Hello World!" );
}
}
运行结果
② corn 表达式 的使用
③ ④ 单纯使用 Quartz
pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.chin</groupId>
<artifactId>01_scheduled_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>01_scheduled_demo</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- <dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency> -->
<!-- <dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency> -->
<!-- quartz定时器 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
<!-- <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency> -->
</dependencies>
</project>
这有个坑,浪费我一点时间,我不知道为什么quartz那个jar包,我一开始使用视频当中提到的2.2.1版本,但死活就是没有job等一系列的接口,所以,我就改成2.2.3这个版本接口了,终于有job了,太不容易了!!!
定时器的任务类
package com.chin._scheduled_demo;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
//import org.quartz.Job;
//import org.quartz.Job;
public class QuartzDemo implements Job {
// 任务调度 需要去调度的我们的方法
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("Execute......" + new Date());
}
}
main函数的启动类。这个类名是随意的啊,我就是我这的maven工程自动给生成了App类,其实类名是很随意的。不用太过于拘谨。。。。。。
package com.chin._scheduled_demo;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args ) throws SchedulerException
{
System.out.println( "Hello World!" );
// 1.创建job对象,你要做什么?
JobDetail jd = JobBuilder.newJob(QuartzDemo.class).build();
// 2.创建tigger对象,在什么时候做?
Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build();
// 3.创建schedule对象,在什么时间做什么事儿?
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
scheduler.scheduleJob(jd,trigger);
// 启动
scheduler.start();
}
}
运行结果
另:
還可以使用cron 表達式 在第2步的时候
// 2.创建tigger对象,在什么时候做?
// Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.repeatSecondlyForever()).build();
Trigger trigger = TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")).build();
运行结果如下
⑤ SpringBoot整合Quartz的使用
还没写完。。。