欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring2.5配置定时任务

程序员文章站 2022-04-19 21:32:03
...
<!-- 设置定时任务,删除phone_sms表数据 -->
	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<!-- 任务是否自动启动 -->
		<property name="autoStartup" value="true"></property>
		<property name="triggers">
            <list>   
                <ref local="phoneSmsTrigger"/>    
            </list>     
        </property>     
	</bean>
	<!--  jobDetail设置该定时任务要执行什么操作,cronExpression设定定时策略。 -->
	<bean id="phoneSmsTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">  
        <property name="jobDetail" ref="phoneSmsRunJob" />
        <property name="cronExpression">  
            <value>3 * * * * ?</value>
        </property>   
    </bean>   
	
	<!-- 设置那个类那个方法执行 -->
	<bean id="phoneSmsRunJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="phoneSmsJob"/>     
        <property name="targetMethod" value="runJob"/>
        <!-- 是否并发 -->
        <property name="concurrent" value="false"/>    
	</bean>

第一个bean,autoStartup用来设定定时任务是否自启动,triggers用来设置有哪些定时任务。triggers的list中可以放置多个<ref />,通过其他bean的id作为引用的标识。

第二个bean,jobDetail设置该定时任务要执行什么操作,cronExpression设定定时策略。

第三个bean,targetObject和targetMethod分别设置定时任务由哪个类和该类的方法来处理。其中的targetObject引用的是id为testService的bean。concurrent表示是否并发,默认是true。

spring3.0简化了很多。


(1)Cron表达式的格式:秒 分 时 日 月 周 年(可选)。

               字段名                 允许的值                        允许的特殊字符  
               秒                         0-59                               , - * /  
               分                         0-59                               , - * /  
               小时                     0-23                               , - * /  
               日                         1-31                               , - * ? / L W C  
               月                         1-12 or JAN-DEC         , - * /  
               周几                     1-7 or SUN-SAT           , - * ? / L C #  
               年 (可选字段)     empty, 1970-2099      , - * /

               “?”字符:表示不确定的值

               “,”字符:指定数个值

               “-”字符:指定一个值的范围

               “/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m

               “L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X

               “W”字符:指定离给定日期最近的工作日(周一到周五)

               “#”字符:表示该月第几个周X。6#3表示该月第3个周五

         (2)Cron表达式范例:

                 每隔5秒执行一次:*/5 * * * * ?

                 每隔1分钟执行一次:0 */1 * * * ?

                 每天23点执行一次:0 0 23 * * ?

                 每天凌晨1点执行一次:0 0 1 * * ?

                 每月1号凌晨1点执行一次:0 0 1 1 * ?

                 每月最后一天23点执行一次:0 0 23 L * ?

                 每周星期天凌晨1点实行一次:0 0 1 ? * L

                 在26分、29分、33分执行一次:0 26,29,33 * * * ?

                 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?