1. 程式人生 > >atititt java定時任務框架選型Spring Quartz 註解總結

atititt java定時任務框架選型Spring Quartz 註解總結

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

atititt.java定時任務框架選型Spring Quartz 總結  

 

1. 。Spring Quartz  

ati recomm 1

2. Spring Quartz具體配置 2

2.1. 增加contexttask名稱空間xml 2

2.2. 增加xsi:schemaLocation valide 2

2.3. 我們的task任務掃描註解in spr.xml 2

2.4. 設定執行方法 3

2.5. 設定輸出日誌 3

3. 執行測試sprXok. 4

4. Quartz Scheduler,定時任務 4

5. java.util.Timer 4

6. 2) ServletContextListener 4

7. org.springframework.scheduling.timer.ScheduledTimerTask 5

8. problem 5

9. Cron表示式 5

10. 參考 6

 

 

1. 。Spring Quartz  (ati recomm

·       Spring的scheduling。 quartz包中對Quartz的框架進行封裝,使得開發時不用寫任何Quartz和Spring的程式碼就可以實現定時任務。Spring通過 JobDetailBean,MethodInvokingJobDetailFactoryBean實現Job的定義,後者更加使用,只需指定要執行的 類,和該類中執行的方法即可,Spring將自動生成符合Quartz要求的JobDetail。例如:  

· .web.xml :  

·             加入  

·            <listener>  

·              <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  

·            </listener>  

Spring3中加強了註解的使用,其中計劃任務也得到了增強,現在建立一個計劃任務只需要兩步就完成了:

作者:: 老哇的爪子 Attilax 艾龍,  EMAIL:[email protected]

轉載請註明來源: http://blog.csdn.net/attilax

2.  

3. Spring Quartz具體配置

 

3.1. 增加contexttask名稱空間xml 

xmlns:context="http://www.springframework.org/schema/context"   

xmlns:task="http://www.springframework.org/schema/task"  

 

3.2. 增加xsi:schemaLocation valide

     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd      

   http://www.springframework.org/schema/task      http://www.springframework.org/schema/task/spring-task-3.1.xsd

3.3. 我們的task任務掃描註解in spr.xml 

 

<!--  o723 ati task add -->

 <task:annotation-driven/>

<context:annotation-config/>

<context:component-scan base-package="com.attilax.time.**"/>

 

<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

 

 

<!--  iha ssh recomm

<task:executor id="executor" pool-size="5" />

<task:scheduler id="scheduler" pool-size="10" />

<task:annotation-driven executor="executor" scheduler="scheduler" />

 -->

 

</beans> 

 

3.4. 設定執行方法

 */@Component  

public class sysncTimeX {

 

public static Logger logger = Logger.getLogger("AtiTimerSyncer");

 @Scheduled(cron="0 0 8 * * ?")  

private static void sync() {

Date date =DateUtil. getDateFrmNet();

 dateTimeX.  setSystime(date);

 logger.info("--o7k1 sync time:ok");

}

 

///@Scheduled(fixedDelay=2000)//每2秒執行一次

3.5.  設定輸出日誌

#----------ati o7k..

log4j.logger.AtiTimerSyncerinfo,AtiTimerSyncerAppender 

log4j.appender.AtiTimerSyncerAppender = org.apache.log4j.DailyRollingFileAppender

log4j.appender.AtiTimerSyncerAppender.Encoding=UTF-8

log4j.appender.AtiTimerSyncerAppender.File=logs/AtiTimerSyncer.log

log4j.appender.AtiTimerSyncerAppender.MaxFileSize20MB

log4j.appender.AtiTimerSyncerAppender.Threshold=debug

log4j.appender.AtiTimerSyncerAppender.ImmediateFlush=true

log4j.appender.AtiTimerSyncerAppender.DatePattern='_'yyyy-MM-dd'.log'

log4j.appender.AtiTimerSyncerAppender.layout=org.apache.log4j.PatternLayout

log4j.appender.AtiTimerSyncerAppender.layout.ConversionPattern=%-4r %-5p [%d{yyyy-MM-dd HH:mm:ss}]   %m   %p  [thrd:%t]    loger:%c   (%C.%M.%L) %n

log4j.appender.AtiTimerSyncerAppender.MaxBackupIndex=10

#-----------------

 

4. 執行測試sprXok.

public static void main(String[] args) {

// attilax 老哇的爪子  ml38   o7k 

//   sync();

System.out.println(SpringUtil.getBean("sysncTimeX")); 

 

}

 Quartz使用-入門使用(java定時任務實現)

5. Quartz Scheduler,定時任務 


Quartz是一個作業排程系統(a job scheduling system),負責在約定的時間到達時執行(或通知)其他軟體控制。是一個Java的定時任務框架,使用它可以方便的實現計劃任務,即在某個時間或每隔 一定時間執行一個任務。Quartz的核心是Job/JobDetail,Trigger和Scheduler。 

6. java.util.Timer

1) 
這個方法應該是最常用的,不過這個方法需要手工啟動你的任務:

如果要執行一些簡單的定時器任務,無須做複雜的控制,也無須儲存狀態,那麼可以考慮使用JDK 入門級的定期器Timer來執行重複任務。

2) 

7.  2) ServletContextListener


這個方法在web容器環境比較方便,這樣,在web server啟動後就可以
自動執行該任務,不需要手工操作。
 

 

8. org.springframework.scheduling.timer.ScheduledTimerTask

3)
如果你用spring,那麼你不需要寫Timer類了,在schedulingContext-timer
.xml中加入下面的內容就可以了:

 

9. problem

Exception in thread "main" org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 115 in XML document from file [D:\workspace\vodx\WebRoot\WEB-INF\classes\applicationContext-common.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'task:annotation-driven'.

 

10. Cron表示式

被用來配置CronTrigger例項。 Cron表示式是一個由 7個子表示式組成的字
符串。每個子表示式都描述了一個單獨的日程細節。這些子表示式用空格分隔,分別表示: 
1. Seconds 秒 
2. Minutes 分鐘 
3. Hours 小時 
4. Day-of-Month 月中的天 
5. Month 月 
6. Day-of-Week 週中的天 
7. Year (optional field) 年(可選的域)

剩下的就是corn表示式了、具體使用以及引數請百度google、

【秒】   【分】  【時】   【日】  【月】   【周】  【年】  

下面只例出幾個式子

CRON表示式    含義 
"0 0 12 * * ?"    每天中午十二點觸發 
"0 15 10 ? * *"    每天早上10:15觸發 
"0 15 10 * * ?"    每天早上10:15觸發 
"0 15 10 * * ? *"    每天早上10:15觸發 
"0 15 10 * * ? 2005"    2005年的每天早上10:15觸發 
"0 * 14 * * ?"    每天從下午2點開始到2點59分每分鐘一次觸發 
"0 0/5 14 * * ?"    每天從下午2點開始到2:55分結束每5分鐘一次觸發 
"0 0/5 14,18 * * ?"    每天的下午2點至2:55和6點至6點55分兩個時間段內每5分鐘一次觸發 
"0 0-5 14 * * ?"    每天14:00至14:05每分鐘一次觸發 
"0 10,44 14 ? 3 WED"    三月的每週三的14:10和14:44觸發 
"0 15 10 ? * MON-FRI"    每個週一、週二、週三、週四、週五的10:15觸發 

 

11. 參考

JAVA定時執行任務的三種方法 - gembin - BlogJava.htm

Quartz使用-入門使用(java定時任務實現) - lotusyangjun的專欄 部落格頻道 - CSDN.NET.htm

java定時任務管理 塵風的blog - ITeye技術網站.htm

quartz 框架定時任務,使用spring @Scheduled註解執行定時任務 蕭若寒 部落格頻道 - CSDN.NET.htm

quartz 框架定時任務,使用spring @Scheduled註解執行定時任務 蕭若寒 部落格頻道 - CSDN.NET.htm

           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述