1. 程式人生 > >Spring Boot和Quartz的整合

Spring Boot和Quartz的整合

Spring Boot目的是零配置,為了遵從該理念,下面的程式碼採用的是註解方式。

1、配置quartz

import org.quartz.Trigger;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.CronTriggerFactoryBean;
import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;

/**
 * 配置quartz
 * @author 
 *
 */
@Configuration
public class Quartz {

	 /** 
     * attention: 
     * Details:配置定時任務 
     */  
    @Bean(name = "jobDetail")  
    public MethodInvokingJobDetailFactoryBean detailFactoryBean(Schedutask task) {// ScheduleTask為需要執行的任務  
        MethodInvokingJobDetailFactoryBean jobDetail = new MethodInvokingJobDetailFactoryBean();  
        
        jobDetail.setConcurrent(false);// 是否併發執行 
        jobDetail.setName("overTimeNoticeJob");// 設定任務的名字  
        jobDetail.setGroup("overTimeNoticeJobGroup");// 設定任務的分組,這些屬性都可以儲存在資料庫中,在多工的時候使用  
        /* 
         * 為需要執行的實體類對應的物件 
         */  
        jobDetail.setTargetObject(task);  
        /* 
         * 新增需要執行的方法 
         * 通過這幾個配置,告訴JobDetailFactoryBean我們需要執行定時執行ScheduleTask類中的需要執行方法 
         */ 
        jobDetail.setTargetMethod("overTimeNotice");  
        return jobDetail;
    }
      
    /** 
     * attention: 
     * Details:配置定時任務的觸發器,也就是什麼時候觸發執行定時任務 
     */  
    @Bean(name = "jobTrigger")
    public CronTriggerFactoryBean cronJobTrigger(MethodInvokingJobDetailFactoryBean jobDetail) {  
        CronTriggerFactoryBean tigger = new CronTriggerFactoryBean();  
        tigger.setJobDetail(jobDetail.getObject());  
        tigger.setCronExpression("* 0/5 * * * ?");// 初始時的cron表示式  ,沒5分鐘執行一次
        tigger.setName("overTimeNoticeTrigger");// trigger的name
        return tigger;  
  
    }  
  
    /** 
     * attention: 
     * Details:定義quartz排程工廠 
     */  
    @Bean(name = "scheduler")  
    public SchedulerFactoryBean schedulerFactory(Trigger cronJobTrigger) {  
        SchedulerFactoryBean bean = new SchedulerFactoryBean();  
        // 用於quartz叢集,QuartzScheduler 啟動時更新己存在的Job  
        bean.setOverwriteExistingJobs(true);  
        // 延時啟動,應用啟動1秒後  
        bean.setStartupDelay(1);  
        // 註冊觸發器  
        bean.setTriggers(cronJobTrigger);  
        return bean;  
    }  
}

quartz的配置類裡面配置了JobDetail的工廠、Trigger的工廠和scheduler的工廠,這樣的方式可以解決Job中的spring的注入bean為空的情況。

2、工作類

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.stereotype.Component;

import com.bonc.micro.service.noticetemplate.NoticeTemplateService;
import com.bonc.server.service.EmailService;
import com.bonc.server.service.ShortMessageService;

@Configuration
@Component // 此註解必加
@EnableScheduling // 此註解必加
/**
 * 超時通知任務
 * 
 * @author liyongguan
 *
 */
public class Schedutask {


	//@Autowired可以使用spring的bean


	/**
	 * 傳送告警通知
	 */
	public void overTimeNotice() {
		//實際的業務
		
		System.out.println("OverTime start time"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
		
		System.out.println("OverTime end time"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
	}

}

知識點來自於:http://blog.csdn.net/liuchuanhong1/article/details/60873295,感謝該博主

相關推薦

Spring BootQuartz整合

Spring Boot目的是零配置,為了遵從該理念,下面的程式碼採用的是註解方式。 1、配置quartz import org.quartz.Trigger; import org.springframework.context.annotation.Bean; impo

Spring BootDubbo整合

  程式碼demo http://git.oschina.net/zhangxh20/spring-boot-dubbo 專案共分成4個模組 dubbo-api dubbo-dao dubbo-service dubbo-web dubbo-

Spring Boot學習筆記(Spring Boot activeMQ整合

Spring Boot學習筆記使用步驟: Spring Boot:並不是不對 Spring 功能上的增強,而是提供了一種快速使用 Spring 的方式。 使用步驟: 1、起步依賴:pom.xml中配置起步依賴,會自動匯入spring相關的許多jar包 <

輕輕鬆鬆學習SpringBoot2:第二十五篇: Spring BootMongodb整合(完整版)

今天主要講的是Spring Boot和Mongodb整合我們先來回顧一下前面章節的相關內容前面我們講了SpringBoot和mysql整合,並且講了操作資料庫的幾種方式自動生成表資料庫操作操作篇回到正題,mongodb的安裝在這就不累述了,win版本的去官網下載,然後一直下一

Spring BootQuartz整合

1.匯入依賴包 <!-- quartz定時器 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artif

spring bootmybatis整合

maven的依賴配置 <!-- spring boot 版本號 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>

spring-boot redis 整合的一個小例子

轉自:http://blog.csdn.net/a67474506/article/details/52595053 在網上看到好多的spring-boot和redis整合的,弄到本地一直報Error resolving template "get", template m

spring bootmybatis整合分頁外掛

MyBatis提供了攔截器介面,我們可以實現自己的攔截器,將其作為一個plugin裝入到SqlSessionFactory中。  首先要說的是,Spring在依賴注入bean的時候,會把所有實現MyBatis中Interceptor介面的所有類都注入到SqlSession

Spring BootThymeleaf整合,結合JPA實現分頁效果

    在專案裡,我需要做一個Spring Boot結合Thymeleaf前端模版,結合JPA實現分頁的演示效果。做的時候發現有些問題,也查了現有網上的不少文件,發現能全棧實現的不多,所以這裡我就把我的做法,全部程式碼和步驟貼出來供大家參考。 1 建立專案,用pom.xml引入依賴 &nb

spring boot MongoDB的整合使用

前言 上一章節,簡單講解了如何整合Spring-data-jpa。本章節,我們來看看如何整合NoSQL的Mongodb。mongodb是最早熱門非關係資料庫的之一,使用也比較普遍。最適合來儲存一些非結構資料了,適合對大量或者無固定格式的資料進行儲存,比如:日誌、快取等。 一點知識

Quartz學習——SpringQuartz整合詳解(三)

Spring是一個很優秀的框架,它無縫的集成了Quartz,簡單方便的讓企業級應用更好的使用Quartz進行任務的排程。下面就對Spring整合Quartz進行簡單的介紹和示例講解!和上一節 Quartz學習——2、簡單入門示例Demo 的流程相似,介紹Spring和Quar

spring boot 2.X整合spring securityspring oauth

​ 網上有很多該系列的教程,但是很多都是spring boot1.x,很少看見關於spring boot 2.0 .本人是打算做個spring cloud的web程式,這個整合我就是放在zuul上,類似於做了個閘道器的鑑權吧。。 國際通用案例

初始quartzspringquartz整合

初識quartz quartz是完全由java開發的一個開源的任務日程管理系統,“任務進度管理器”就是一個在預先確定(被納入日程)的時間到達時,負責執行(或者通知)其他軟體元件的系統。 1.quartz有兩種儲存方式: RAM儲存和JDBC儲存,顯然ram儲存就

Quartz學習——SSMM(Spring+SpringMVC+Mybatis+Mysql)Quartz整合詳解(四)

當任何時候覺你得難受了,其實你的大腦是在進化,當任何時候你覺得輕鬆,其實都在使用以前的壞習慣。 通過前面的學習,你可能大致瞭解了Quartz,本篇博文為你開啟學習SSMM+Quartz的旅程!歡迎上車,開始美好的旅程! 本篇是在SSM框架——Spri

基於spring bootmongodb打造一套完整的許可權架構(五)【整合使用者模組、選單模組、角色模組】

      在第四章我們已經實現了對security的整合,我們已經實現了登陸到我們的系統中了,但是大家會發現我們登陸成功以後並沒有顯示左側的選單節點,本章我們將開始整合使用者模組、選單模組以及角色模組。      1、首先我們需要在sys的entity目錄底下建立Tree、

spring-boot(八) springboot整合shiro-登入認證許可權管理

Apache Shiro What is Apache Shiro? Apache Shiro是一個功能強大、靈活的,開源的安全框架。它可以乾淨利落地處理身份驗證、授權、企業會話管理和加密。 Apache Shiro的首要目標是易於使用和理解。安全通常很複雜,甚至讓人感到很痛苦,但是Shiro卻不是

spring-bootmybatis的整合

在idea裡建立一個spring-boot工程 選依賴的時候把web裡的web勾上,sql裡的mysql和mybatis也勾上 ,

spring-bootJPA多資料來源整合

今天弄一下spring-boot和jpa的多資料來源整合 Jpa(Java Persistence API)Java持久化API

Spring-bootkafka實現消息發送器

pla res 實現 sage 發送 temp warn pre autowire 1,配置kafakaproducer和consummer。 2,發送消息通過回調的方式處理發送成功或者失敗。 public class Sender { Logger log =

SpringBoot之旅 -- 定時任務兩種(Spring Schedule 與 Quartz 整合 )實現

目的 config object cnblogs java title cor 進行 eat 相關文章 Spring Boot 相關文章目錄 前言 最近在項目中使用到定時任務,之前一直都是使用Quartz 來實現,最近看Spring 基礎發現其實Spring 提供