Spring中Quartz的配置及corn表达式

  Quartz可以用来执行任务调度功能,如间隔一定时间调用执行任务。用起来还是蛮方便的。只要将你要调用的类配置到Spring配置文件即可。

 

在Spring的配置文件中配置Quartz。

 1 <!-- 要调用的工作类 -->
 2        <bean id="quartzJob" class="com.aisino.projects.supply.task.Quartzjob"></bean>
 3        <!-- 定时任务活动生效与失效 -->
 4        <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
 5            <!-- 调用的类 -->
 6            <property name="targetObject">
 7                <ref bean="quartzJob"/>
 8            </property>
 9            <!-- 调用类中的方法 -->
10            <property name="targetMethod">
11                <value>Job</value>
12            </property>
13        </bean>
14        <!-- 定义触发时间 -->
15        <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
16            <property name="jobDetail">
17                <ref bean="jobtask"/>
18            </property>
19            <!-- cron表达式 -->
20            <property name="cronExpression">
21                <value>0 1 0 * * ?</value>
22            </property>
23        </bean>
24 <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  -->
25        <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
26            <property name="triggers">
27                <list>
28                    <ref bean="doTime"/>
29                </list>
30            </property>
31        </bean>

  如上图,在第2行配置要调用的类,第11行配置要调用的方法,第21行配置要调用的时间,即可。

 

  时间的话。这里用的corn表达式。各参数如下:

字段    允许值        允许的特殊字符

秒     0-59         , - * / 
分     0-59         , - * / 
小时    0-23         , - * / 
日期    1-31         , - * ? / L W C 
月份    1-12 或者 JAN-DEC  , - * / 
星期    1-7 或者 SUN-SAT   , - * ? / L C # 
年(可选) 留空, 1970-2099   , - * /

 

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

“,”字符:指定数个值

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

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

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

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

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

 

  所以:上面例子里表示的就是:每天00点01分的时候执行一次Quartzjob类的Job方法。如果需要多个任务调度,只需要重复写上面4个bean中的第2、3个,然后将触发时间配置进第4个bean的list里即可。当然前提是你的调度都要存在一个类里~

 

posted @ 2015-09-21 15:28  PC君  阅读(2821)  评论(0编辑  收藏  举报