採用一下羽佳風格~~~
① 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的使用
還沒寫完。。。