一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 在Java的Spring框架中配置Quartz的教程

在Java的Spring框架中配置Quartz的教程

2020-04-14 11:28huazhizui JAVA教程

這篇文章主要介紹了在Java的Spring框架中配置Quartz的教程,Quartz是一款高人氣的開源作業調度框架,需要的朋友可以參考下

Spring中配置Quartz的過程:

1.導入JAR包

quartz需要的JAR包,已經包含在spring中,位置在spring解壓后目錄的 \lib\quartz 下的quartz-all-1.6.1.jar,

將其拷貝到工程 的 WEB-INF/lib 下就行了。


2.配置web.xml,讓spring啟動時加載quartz的配置文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <!-- spring -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:application-*.xml</param-value>
  </context-param>
 
  <!-- spring監聽 -->
 
  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
</web-app>


3.編寫quartz的配置文件: application-quartz.xml 其實這些配置完全可以寫在其他的spring配置文件里

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?xml version="1.0" encoding="UTF-8"?>
 
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xsi:schemaLocation="
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
 
  <!-- 任務實體 -->
  <bean id="testTaskBean" class="com.jp.task.TestTask" />
 
  <!-- 定時更新政策任務方法 -->
  <bean id="testTaskTimerMethod"
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <property name="targetObject" ref="testTaskBean" />
    <!-- targetMethod 配置定時執行的方法名 -->
    <property name="targetMethod" value="executeAction" />
    <property name="concurrent" value="false" />
  </bean>
 
  <!-- 定時更新政策觸發器 -->
  <bean id="testTaskTrigger"
    class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="syncPolicyTaskTimerMethod" />
        <!-- 每個3分鐘的第0秒執行 -->
    <property name="cronExpression" value="0 0/3 * * * ?" />
  </bean>
 
  <!-- 訂制任務列表 -->
  <bean id="scheduler"
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
      <list>
        <ref bean="testTaskTrigger" />
      </list>
    </property>
  </bean>
</beans>

4.編寫執行任務的JAVA類 TestTask

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.jp.task;
  
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;
 
 
public class TestTask extends QuartzJobBean{
   
  Logger log = Logger.getLogger( PolicyServiceTest.class );
     
  public void executeAction(){
    log.info("Hello quartz");
  }
 
  @Override
  protected void executeInternal(JobExecutionContext arg0)
      throws JobExecutionException {
     
  }
 
}

5.所有工作準備完畢,一運行。基本上就報錯了。大約是NoSuchMethod這樣的錯誤。
這是由于commons-collections.jar版本太低引起的。要commons-collections-3.2.jar以上。

這時你找工程中卻是有個commons-collections-3.2.jar。 怎么回事呢,再找會發現在hibernate的里有個commons-collections-2.1.1.jar。

將commons-collections-2.1.1.jar刪掉就行了。


PS:cronExpression——Cron表達式說明

  • 秒 
  • 分 
  • 小時 
  • 月內日期 
  • 月 
  • 周內日期 
  • 年(可選字段) 
  • 特殊字符 

Cron 觸發器利用一系列特殊字符,如下所示: 

反斜線(/)字符表示增量值。例如,在秒字段中“5/15”代表從第 5 秒開始,每 15 秒一次。 

問號(?)字符和字母 L 字符只有在月內日期和周內日期字段中可用。問號表示這個字段不包含具體值。所以,如果指定月內日期,可以在周內日期字段中插入“?”,表示周內日期值無關緊要。字母 L 字符是 last 的縮寫。放在月內日期字段中,表示安排在當月最后一天執行。在周內日期字段中,如果“L”單獨存在,就等于“7”,否則代表當月內周內日期的最后一個實例。所以“0L”表示安排在當月的最后一個星期日執行。 

在月內日期字段中的字母(W)字符把執行安排在最靠近指定值的工作日。把“1W”放在月內日期字段中,表示把執行安排在當月的第一個工作日內。 

井號(#)字符為給定月份指定具體的工作日實例。把“MON#2”放在周內日期字段中,表示把任務安排在當月的第二個星期一。 

星號(*)字符是通配字符,表示該字段可以接受任何可能的值。 
字段 允許值 允許的特殊字符  :
秒 0-59 , - * /  
分 0-59 , - * /  
小時 0-23 , - * /  
日期 1-31 , - * ? / L W C  
月份 1-12 或者 JAN-DEC , - * /  
星期 1-7 或者 SUN-SAT , - * ? / L C #  
年(可選) 留空, 1970-2099 , - * / 
表達式意義  
"0 0 12 * * ?" 每天中午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期間的每1分鐘觸發  
"0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鐘觸發  
"0 0/5 14,18 * * ?" 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發  
"0 0-5 14 * * ?" 在每天下午2點到下午2:05期間的每1分鐘觸發  
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44觸發  
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發  
"0 15 10 15 * ?" 每月15日上午10:15觸發  
"0 15 10 L * ?" 每月最后一日的上午10:15觸發  
"0 15 10 ? * 6L" 每月的最后一個星期五上午10:15觸發  
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一個星期五上午10:15觸發  
"0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發  
每天早上6點 

0 6 * * * 

每兩個小時 

0 */2 * * *  
晚上11點到早上8點之間每兩個小時,早上八點 

0 23-7/2,8 * * * 

每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點 

0 11 4 * 1-3  
1月1日早上4點 

0 4 1 1 *

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一级特黄aa大片在线 | 欧美黑人一级片 | a级免费观看 | 日本国产最新一区二区三区 | sao虎在线精品永久 s0e一923春菜花在线播放 | 视频一区二区三区欧美日韩 | 日本xxwwwxxxx| 天天色天| 久久电影院久久国产 | 成年性午夜免费视频网站不卡 | 久草在线福利视频在线播放 | 校园全黄h全肉细节文 | 日本无遮挡吸乳视频看看 | 2018亚洲男人天堂 | 亚洲四虎在线 | 午夜电影三级还珠格格 | 小莹的性荡生活45章 | 色男人网 | 精品午夜寂寞影院在线观看 | 美女脱了内裤让男生玩屁股 | 国产黄频 | 毛片手机在线视频免费观看 | 精品久久免费观看 | 古代翁熄乩伦小说h | 亚洲福利天堂 | 我与恶魔的h生活ova | 成人精品一区久久久久 | 第一次做m被调教经历 | 999热在线精品观看全部 | 欧美综合亚洲图片综合区 | 操乳| 美女一线天 | 亚洲精品丝袜在线一区波多野结衣 | 四虎国产精品免费久久久 | 国产盗摄美女嘘嘘视频 | 精品9e精品视频在线观看 | 99热在线只有精品 | 亚洲2017天堂色无码 | 无码国产成人777爽死 | 日本成人黄色网址 | 欧美日韩在线成人看片a |