SpringBoot學習筆記[0],Quartz

採用一下羽佳風格~~~

參考視頻

① 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的使用

還沒寫完。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章