項目ITP(五) spring4.0 整合 Quartz 實現任務調度

版權聲明:本文為博主原創文章,未經博主同意不得轉載。

https://blog.csdn.net/u010378410/article/details/26016025


2014-05-16 22:51 by Jeff Li

前言

  系列文章:[傳送門]

  項目需求:

    二維碼推送到一體機上,給學生簽到掃描用。然后須要的是 上課前20分鐘 ,幸好在幫帶我的學長做 p2p 的時候。接觸過。自然 quartz 是首選。所以我就配置了下,搞了個小例子給大家。

正文?

  spring4.0 整合 Quartz 實現任務調度

這是期末項目的最后一篇。剩下到暑假吧。

?  ?Quartz?介紹

Quartz is a full-featured, open source job scheduling service that can be integrated with, or used along side virtually any Java application - from the smallest stand-alone application to the largest e-commerce system. Quartz can be used to create simple or complex schedules for executing tens, hundreds, or even tens-of-thousands of jobs;?
Quartz框架是一個全功能、開源的任務調度服務。能夠集成差點兒不論什么的java應用程序—從小的單片機系統到大型的電子商務系統。

Quartz能夠運行上千上萬的任務調度。

核心概念
Quartz核心的概念:scheduler任務調度、Job任務、Trigger觸發器、JobDetail任務細節
相關文檔:http://www.quartz-scheduler.org/documentation/quartz-2.2.x/quick-start

實戰?

  第一步 :spring、quartz 對應的jar包。加入到項目中(須要的call me)

    /WEB-INF/lib/quartz-2.2.1.jar

    以及spring的一些必要包

  

?  ?第二步:web.xml中配置spring
復制代碼
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>wmuitp</display-name><!--Spring WebApplicationContext上下文。稱為父上下文(父容器)--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--Srping<listener>  <listener-class>  org.springframework.web.context.request.RequestContextListener  </listener-class>  </listener> --><!--載入spring的配置文件 -->  <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!--Spring MVC 配置 DispatcherServlet--><servlet><servlet-name>springServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet>  <servlet-mapping><servlet-name>springServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--filter配置。解決編碼問題 --> <filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!--OpenSessionInViewFilter配置。解決延遲載入時Session會關閉的問題 -->  <filter><filter-name>openSessionInViewFilter</filter-name><filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class></filter><filter-mapping><filter-name>openSessionInViewFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- session過期時間:  20--><session-config>   <session-timeout>20</session-timeout></session-config><!-- 錯誤界面  --><error-page><exception-type>java.lang.Throwable</exception-type><location>/WEB-INF/error/500.jsp</location></error-page><error-page><error-code>500</error-code><location>/WEB-INF/error/500.jsp</location></error-page><error-page><error-code>404</error-code><location>/WEB-INF/error/404.jsp</location></error-page><error-page><error-code>400</error-code><location>/WEB-INF/error/400.jsp</location></error-page>
</web-app>
復制代碼

?  #有些你不用的,就不要寫了。

第三:在spring配置文件里配置quartz任務調度
復制代碼
<!--Quartz--><!-- 集成方式:JobDetailFactoryBean,而且任務類須要繼承QuartzJobBean--><!-- 定義jobDetail --><bean id="jobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"><!-- durability 表示任務完畢之后是否依舊保留到數據庫。默認false   --><property name="durability" value="true" />  <!--     目標類  /wmuitp/src/test/SpringQuartz.java--><property name="jobClass" value="test.SpringQuartzTest"></property><!--  在這個例子中。jobDataAsMap沒實用,此目標類中接受的參數 ,若參數為service。則能夠在此進行參數配置,相似struts2 --><!--<property name="jobDataAsMap">  <map>  <entry key="service"><value>simple is the beat</value></entry>  </map>  </property>--></bean><!-- 定義simpleTrigger觸發器 --><!--     <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"><property name="jobDetail" ref="jobDetail"></property><property name="repeatCount"><value>8</value></property><property name="repeatInterval"><value>1000</value></property><property name="startDelay"><value>4</value></property></bean> --><!-- 還有一種觸發器是CornTrigger --><bean id="cornTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><property name="jobDetail" ref="jobDetail"/><!-- 每一個10秒觸發 --><property name="cronExpression" value="0/10 * * * * ?"/></bean> <!-- 定義核心調度器 --><bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><ref bean="cornTrigger"/></property></bean>
復制代碼
  #目標類
    <property name="jobClass" value="test.SpringQuartzTest"></property>
  以下第四步:編寫目標類
復制代碼
package test;import java.util.Date;import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;public class SpringQuartzTest extends QuartzJobBean
{/*業務實現*/public void work() {System.out.println("運行調度任務:"+new Date());}@Overrideprotected void executeInternal(JobExecutionContext arg0)throws JobExecutionException {this.work();}
}
復制代碼
#須要繼承QuartzJobBean測試運行結果(這個非常重要 能服眾)

總結

  spring quartz

  

感謝及資源共享

    

    http://url.cn/RzETYu?加入我的群

    

    路上走來一步一個腳印。希望大家和我一起。

    感謝讀者!

非常喜歡你們給我的支持。假設支持,點個贊。

    知識來源: 《spring in action》

轉載于:https://www.cnblogs.com/ldxsuanfa/p/10885607.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247930.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247930.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247930.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

喜歡用Block的值得注意-Block的Retain Cycle的解決方法

本文不講block如何聲明及使用&#xff0c;只講block在使用過程中暫時遇到及帶來的隱性危險。 主要基于兩點進行演示&#xff1a; 1.block 的循環引用(retain cycle) 2.去除block產生的告警時&#xff0c;需注意問題。 有一次&#xff0c;朋友問我當一個對象中的block塊中的訪問…

小程序基礎 (三)

5. 使用 slot 使用單個slot // 頁面 <Test><view>自定義內容</view> </Test>// 組件 <view><view>前面的內容</view><slot></slot><view>后面的內容</view> </view>使用多個slot - 具名 // 頁面 &…

【PyQt5】QT designer + eclipse 集成開發

【寫在前面的話】 考慮將pyqt5的界面開發qt designer 集成在eclipse中&#xff0c;并且&#xff0c;不利用cmd命令行進行轉換。 【工具】 1、pyqt5 2、qt designer 3、eclipse pydy 【步驟】 1、首先配置Qt designer。 菜單 run-->external Tools-->External tools confi…

iOS UIlabel文字排版(改變字間距行間距)分類

在iOS開發中經常會用到UIlabel來展示一些文字性的內容&#xff0c;但是默認的文字排版會覺得有些擠&#xff0c;為了更美觀也更易于閱讀我們可以通過某些方法將UIlabel的行間距和字間距按照需要調節。 比如一個Label的默認間距效果是這樣&#xff1a; 然后用一個封裝起來的Cat…

MySQL查詢之聚合查詢

為了快速得到統計數據&#xff0c;提供了5個聚合函數&#xff1a; count(*)表示計算總行數&#xff0c;括號中寫星與列名&#xff0c;結果是相同的 查詢學生總數 select count(*) from students; max(列)表示求此列的最大值 查詢女生的編號最大值 select max(id) from students…

React基礎學習(第一天)

React 概述 : React 是一個用于 構建用戶界面 的 JavaScript 庫因為框架是有一整套解決方案的&#xff0c;React就是純粹寫UI組件的 沒有什么異步處理機制、模塊化、表單驗證這些。React和react-router, react-redux結合起來才叫框架&#xff0c;而React本身只是充當一個前端…

iOS 富文本風格NSMutableParagraphStyle、定制UITextView插入圖片和定制復制

問題一 開發過程中&#xff0c;經常會遇到動態計算行高的問題&#xff0c; - (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullableNSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingC…

day24 01 初識繼承

day24 01 初識繼承 面向對象的三大特性&#xff1a;繼承&#xff0c;多態&#xff0c;封裝 一、繼承的概念 繼承&#xff1a;是一種創建新類的方式&#xff0c;新建的類可以繼承一個或者多個父類&#xff0c;父類又可稱基類或超類&#xff0c;新建的類稱為派生類或者子類 class…

React基礎學習(第二天)

虛擬DOM JSX 涉及到 虛擬DOM ,簡單聊一下 定時器渲染問題 // 方法 function render() {//2. 創建react對象let el (<div><h3>時間更新</h3><p>{ new Date().toLocaleTimeString()}</p></div>)//3. 渲染ReactDOM.render(el, document.g…

iOS 去除字符串中的空格或多余空格(適合英文單詞)

NSString -stringByTrimmingCharactersInSet: 是個你需要牢牢記住的方法。它經常會傳入 NSCharacterSet whitespaceCharacterSet 或 whitespaceAndNewlineCharacterSet 來刪除輸入字符串的頭尾的空白符號。 需要重點注意的是&#xff0c;這個方法 僅僅 去除了 開頭 和 結尾 的…

華為交換機在Telnet登錄下自動顯示接口信息

因為用console連接交換機&#xff0c;默認是自動顯示接口信息的&#xff0c;比如down掉一個接口后&#xff0c;會自動彈出接口被down掉的信息&#xff0c;但是在telnet連接下&#xff0c;默認是不顯示這些信息的&#xff0c;需要開啟后才可顯示。 1、首先開啟info-center(默認是…

React基礎學習(第三天)

條件渲染 1. if / else render () {if (this.state.isLoading) { // 正在加載中return <h1>Loading...</h1>}return <div>這就是我們想要的內容</div>} // 鉤子函數 五秒鐘之后 修改狀態值componentDidMount () { setTimeout(() > {this.setState(…

componentsJoinedByString 和 componentsSeparatedByString 的方法的區別

將string字符串轉換為array數組 NSArray *array [Str componentsSeparatedByString:","]; &#xff1d;&#xff1d;反向方法 將array數組轉換為string字符串 NSString *tempString [mutableArray componentsJoinedByString:","];--,是分隔符 可不加分隔…

java中的各種數據類型在內存中存儲的方式

轉載別人的附上鏈接&#xff1a;https://blog.csdn.net/zj15527620802/article/details/80622314 1.java是如何管理內存的 java的內存管理就是對象的分配和釋放問題。&#xff08;其中包括兩部分&#xff09; 分配&#xff1a;內存的分配是由程序完成的&#xff0c;程序員需要通…

vscode的 jsonp 配置文件

{ // 工具-字體大小 “editor.fontSize”: 15, // 工具-tab縮進 “editor.tabSize”: 2, // 工具-在視區寬度換行 “editor.wordWrap”: “on”, // 工具-縮放 “window.zoomLevel”: 1, // 工具-編寫tab識別語言格式 “emmet.includeLanguages”: { “vue-html”: “html”, “…

NSString拼接字符串和NSPredicate詳解

NSString* string; // 結果字符串 02 NSString* string1, string2; //已存在的字符串&#xff0c;需要將string1和string2連接起來 03 04 //方法1. 05 string [[NSString alloc]initWithFormat:"%,%", string1, string2 ]; 06 07 //方法2. 08 string [string1 …

線程模塊

信號量 from threading import Semaphore,Thread import timedef func(a,b):time.sleep(1)sem.acquire()print(ab)sem.release()sem Semaphore(4) for i in range(10):t Thread(targetfunc,args(i,i5))t.start() 信號量事件 # 事件被創建的時候&#xff0c;默認為False狀態 #…

React中級學習(第一天)

Props深入 children 作用 : 獲取組件標簽的 子節點獲取方式 : this.props.children <App>此處的內容&#xff0c;就是組件的 children&#xff0c;將來通過組件的 props.children 就可以獲取到這些子節點了 </App>props 校驗 作用&#xff1a;規定組件props的類…

iOS 正則表達式判斷純數字以及匹配11位手機號碼

1用正則表達式 //是否是純數字(BOOL)isNumText:(NSString *)str{NSString * regex "(/^[0-9]*$/)";NSPredicate * pred [NSPredicate predicateWithFormat:"SELF MATCHES %", regex];BOOL isMatch [pred evaluateWithObject:st…

Elasticsearch集成ik分詞器

1、插件地址https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.0.0/elasticsearch-analysis-ik-7.0.0.zip 2、找到對應版本的插件通過 http://192.168.1.8:9200查看ES的版本&#xff0c;找到對應的IK分詞插件 下載與之對應的版本https://github.com/me…