<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Spring的任務(wù)調(diào)度服務(wù)實(shí)例講解 {轉(zhuǎn)}

    Spring的任務(wù)調(diào)度服務(wù)實(shí)例講解
    記的以前在做一家人才招聘網(wǎng)站時(shí)遇到的一個(gè)問(wèn)題,因?yàn)榘滋斓牧髁糠浅4鬄榱藴p輕網(wǎng)站的壓力所以客戶要求一些不是太急手的任務(wù)(如,給注冊(cè)用戶發(fā)送郵件、清理日常垃圾信息等等)都放在凌晨流量最小的時(shí)間段去執(zhí)行,當(dāng)時(shí)我們借助java.util.Timer來(lái)實(shí)現(xiàn)的。但是對(duì)于更加復(fù)雜的任務(wù)調(diào)度Timer就不太容易了,后來(lái)了解了Quartz(OpenSymphony的提供任務(wù)調(diào)務(wù)類庫(kù))可以大大彌補(bǔ)Timer的不足可以使開發(fā)者能夠完成各種復(fù)雜的任務(wù)調(diào)度。Spring又對(duì)其提供了很好的支持使得開發(fā)者不用另外去學(xué)習(xí)這套全新的類庫(kù)就能很方便的使用。
    下面提供一個(gè)實(shí)例來(lái)講解:

    1. 首先把spring.jar包放到classpath下

    2. 編輯spring配制文件,ApplicationContext.xml內(nèi)容如下:

    代碼
    						<
    						?x
    						ml
    						version
    						="
    						1.0
    						"
    						encoding
    						="
    						UTF-8
    						"
    						?>
    						
    <! DOCTYPE beans PUBLIC " -//SPRING//DTD BEAN//EN " " spring-beans.dtd " >
    < beans >
    <!—要調(diào)度的對(duì)象-->
    < bean id =" testQuarz " class =" springtimer.TestQuarz " />

    <!--定義定時(shí)執(zhí)行 testQuarz 這個(gè)bean中的sayHello()方法-->
    <beanid="helloworldTask"class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <propertyname="targetObject">
    <refbean="testQuarz"/>
    </property>
    <property name="targetMethod">
    <value>sayHello<
    /value>
    </property>
    <
    /bean>

    <!--觸發(fā)器的 bean的設(shè)置,在這里我們?cè)O(shè)置了我們要觸發(fā)的jobDetail是哪個(gè)。這里我們定義了要觸發(fā)的jobDetail是helloworldTask,即觸發(fā)器去觸發(fā)哪個(gè)bean ..并且我們還定義了觸發(fā)的時(shí)間:每天 5 : 17 pm -->
    < bean id =" cronTrigger "
    class =" org.springframework.scheduling.quartz.CronTriggerBean ">
    < property name =" jobDetail ">
    < ref bean =" helloworldTask " />
    </ property>
    <property name="cronExpression">
    <!-- 關(guān)鍵在配置此表達(dá)式 -->
    <value>0 17 17 * * ?<
    / value >
    </ property>
    <
    / bean >

    <!--管理觸發(fā)器的總設(shè)置,管理我們的觸發(fā)器列表,可以在 bean的list中放置多個(gè)觸發(fā)器。
    -->
    < bean autowire =" no "
    class =" org.springframework.scheduling.quartz.SchedulerFactoryBean ">
    < property name =" triggers ">
    < list >
    < ref local =" cronTrigger " />
    </ list>
    <
    / property >
    </ bean>
    <
    / beans >

    3.以下是被調(diào)度的類代碼

    代碼
    						package
    						springtimer
    						;
    						

    public class TestQuarz {

    public void sayHello () {
    System . out . println (" HelloWorld! ");
    }
    }

    4,提供測(cè)試類

    代碼
    						public
    						class 
    						TestHello
    						{
    						

    public static void main ( String [] args ) {
    / / 只要加載配置文件就可以了,
    ApplicationContextcontext=newClassPathXmlApplicationContext("ApplicationContext.xml");
    System.out.println("*****完畢******");
    }

    5,Ok自已可以設(shè)置sping-config文件中<value>0 17 17 * * ?</value>的調(diào)度表達(dá)式,可以測(cè)試?yán)?

    6, 下面簡(jiǎn)單的介紹一下cron expressions(調(diào)度表達(dá)式)

    格式列表:

    代碼
    						Field
    						Name
    						|
    						Mandatory
    						?
    						|
    						Allowed
    						Values
    						|
    						Allowed
    						Special
    						Characters
    						
    Seconds | YES | 0 - 59 | , - * /
    Minutes | YES | 0-59 | , - *
    /
    Hours | YES | 0 - 23 | , - * /
    Day of month | YES | 1-31 | , - * ?
    / L W C
    Month | YES | 1 - 12 or JAN - DEC | , - * /
    Day of week | YES | 1-7 or SUN-SAT | , - * ?
    / L C #
    Year | NO | empty , 1970 - 2099 | , - * /

    至于詳細(xì)的解釋你一看例子就會(huì)明白

    例子列表如下:
    表達(dá)式 解釋
    0 0 12 * * ? 在每天中午12:00觸發(fā)
    0 15 10 ? * * 每天上午10:15 觸發(fā)
    0 15 10 * * ? 每天上午10:15 觸發(fā)
    0 15 10 * * ? * 每天上午10:15 觸發(fā)
    0 15 10 * * ? 2005 在2005年中的每天上午10:15 觸發(fā)
    0 * 14 * * ? 每天在下午2:00至2:59之間每分鐘觸發(fā)一次
    0 0/5 14 * * ? 每天在下午2:00至2:59之間每5分鐘觸發(fā)一次
    0 0/5 14,18 * * ? 每天在下午2:00至2:59和6:00至6:59之間的每5分鐘觸發(fā)一次
    0 0-5 14 * * ? 每天在下午2:00至2:05之間每分鐘觸發(fā)一次
    0 10,44 14 ? 3 WED 每三月份的星期三在下午2:00和2:44時(shí)觸發(fā)
    0 15 10 ? * MON-FRI 從星期一至星期五的每天上午10:15觸發(fā)
    0 15 10 15 * ? 在每個(gè)月的每15天的上午10:15觸發(fā)
    0 15 10 L * ? 在每個(gè)月的最后一天的上午10:15觸發(fā)
    0 15 10 ? * 6L 在每個(gè)月的最后一個(gè)星期五的上午10:15觸發(fā)
    0 15 10 ? * 6L 2002-2005 在2002, 2003, 2004 and 2005年的每個(gè)月的最后一個(gè)星期五的上午10:15觸發(fā)
    0 15 10 ? * 6#3 在每個(gè)月的第三個(gè)星期五的上午10:15觸發(fā)
    0 0 12 1/5 * ? 從每月的第一天起每過(guò)5天的中午12:00時(shí)觸發(fā)
    0 11 11 11 11 ? 在每個(gè)11月11日的上午11:11時(shí)觸發(fā).

    posted on 2006-10-11 14:53 圓月彎刀 閱讀(405) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2006年10月>
    24252627282930
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(1)

    隨筆檔案

    最新隨筆

    搜索

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 黄网站免费在线观看| 亚洲男人第一无码aⅴ网站| 日韩在线视频免费| 国产精品亚洲午夜一区二区三区 | 久久综合亚洲色HEZYO社区 | 亚洲伊人久久大香线蕉结合| 伊人亚洲综合青草青草久热| 成年女人毛片免费观看97| 免费观看91视频| 有色视频在线观看免费高清在线直播| 亚洲一级毛片在线观| 久久91亚洲精品中文字幕| 亚洲第一视频在线观看免费| 在线不卡免费视频| 亚州免费一级毛片| 日本一道本不卡免费| 久久久久久毛片免费看| 色哟哟国产精品免费观看| 亚洲精品无码久久久久秋霞| 亚洲国产成人久久99精品| 亚洲欧洲国产日韩精品| 亚洲av永久无码精品国产精品| 亚洲欧洲精品成人久久曰影片 | 青青青亚洲精品国产| 亚洲色成人四虎在线观看| 亚洲人成综合在线播放| 亚洲国产精品久久人人爱| 中文字幕在线观看亚洲| 久久亚洲AV成人无码电影| 亚洲AV中文无码字幕色三| 国产av无码专区亚洲av桃花庵| 亚洲色欲久久久综合网东京热 | 一个人免费播放在线视频看片| 高潮毛片无遮挡高清免费视频| 色天使亚洲综合一区二区| 亚洲精品欧美综合四区 | 在线观看亚洲免费| 在线视频免费国产成人| 国产精品二区三区免费播放心| 成年人网站在线免费观看| 午夜成人免费视频|