`

Spring中配置定时器

阅读更多

在web应用中,可以通过spring的配置,实现定时器的作用

具体配置的代码如下:(如配置在applicationContext-services.xml中

Xml代码 复制代码
  1. <bean id="buildHtml" parent="txProxyTemplate">      
  2.        <property name="target">      
  3.             <bean   class="com.njusc.gathd.gxh.templet.HtmlBuilder">      
  4.                   <property name="gxhUserService" ref="gxhUserService"></property>      
  5.             </bean>      
  6.        </property>      
  7.     </bean>      
  8.       
  9.     <bean id="methodInvokingJobDetail"      
  10.         class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">      
  11.         <property name="targetObject">      
  12.             <ref bean="buildHtml" />      
  13.         </property>      
  14.         <property name="targetMethod">      
  15.             <value>buildSendHtml</value>      
  16.         </property>      
  17.     </bean>      
  18.       
  19.     <bean id="cronTrigger"      
  20.         class="org.springframework.scheduling.quartz.CronTriggerBean">      
  21.         <property name="jobDetail">      
  22.             <ref bean="methodInvokingJobDetail" />      
  23.         </property>      
  24.         <property name="cronExpression">      
  25.             <value>0 26 16 * * ?</value>      
  26.         </property>      
  27.     </bean>      
  28.       
  29.     <bean        
  30.         class="org.springframework.scheduling.quartz.SchedulerFactoryBean">      
  31.         <property name="triggers">      
  32.             <list>      
  33.                 <ref local="cronTrigger" />      
  34.             </list>      
  35.         </property>      
  36.     </bean>  
<bean id="buildHtml" parent="txProxyTemplate">   
	   <property name="target">   
	        <bean   class="com.njusc.gathd.gxh.templet.HtmlBuilder">   
	              <property name="gxhUserService" ref="gxhUserService"></property>   
	        </bean>   
	   </property>   
	</bean>   
   
	<bean id="methodInvokingJobDetail"   
	    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">   
	    <property name="targetObject">   
	        <ref bean="buildHtml" />   
	    </property>   
	    <property name="targetMethod">   
	        <value>buildSendHtml</value>   
	    </property>   
	</bean>   
   
	<bean id="cronTrigger"   
	    class="org.springframework.scheduling.quartz.CronTriggerBean">   
	    <property name="jobDetail">   
	        <ref bean="methodInvokingJobDetail" />   
	    </property>   
	    <property name="cronExpression">   
	        <value>0 26 16 * * ?</value>   
	    </property>   
	</bean>   
   
	<bean     
	    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">   
	    <property name="triggers">   
	        <list>   
	            <ref local="cronTrigger" />   
	        </list>   
	    </property>   
	</bean>
 

配置说明:

<bean id="buildHtml"  parent="txProxyTemplate">  中的buildHtml 是定时器具体操作的实现类,该类中可以实现具体要操作的方法。

配置中的 buildSendHtml buildHtml类中的一个方法,该方法将按照指定的时间被执行。

时间的配置如下:

              <value>0 26 16 * * ?value> 

时间大小由小到大排列,从秒开始,顺序为 秒,分,时,天,月,年    *为任意 ?为无限制。由此上面所配置的内容就是,在每天的16点26分启动buildSendHtml() 方法

具体时间设定可参考

"0/10 * * * * ?" 每10秒触发

"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触发

关于cronExpression的介绍: 

  
字段     允许值     允许的特殊字符  
秒     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 * 

 

注意: 实现上述功能需加包

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics