Spring定时器总结

Spring2.5环境下项目中的实际应用

  
  
  
  
  1. package cn.com.member.timer; 
  2.   
  3. import java.text.ParseException; 
  4. import java.text.SimpleDateFormat; 
  5. import java.util.Date; 
  6.   
  7. import org.apache.log4j.Logger; 
  8. import org.quartz.JobDataMap; 
  9. import org.quartz.JobExecutionContext; 
  10. import org.quartz.JobExecutionException; 
  11. import org.springframework.context.ApplicationContext; 
  12. import org.springframework.scheduling.quartz.QuartzJobBean; 
  13.   
  14. import cn.com.exchangegift.service.ExperienceSortService; 
  15.   
  16.   
  17. /** 
  18.  * 定时生成一个页面 
  19.  * @date:下午04:15:51 2010-11-18 
  20.  */ 
  21. public class MyPageTimer extends QuartzJobBean{ 
  22.   
  23.     Logger logger=Logger.getLogger(MyPageTimer.class); 
  24.      
  25.     @Override 
  26.     protected void executeInternal(JobExecutionContext arg0)throws JobExecutionException { 
  27.        // 说明:ApplicationContext 不是新生成的,是在配置文件中配置进去的从JobDetailBean设置进去的引用。 
  28.        JobDataMap mergedJobDataMap = arg0.getMergedJobDataMap(); 
  29.        ApplicationContext application = (ApplicationContext) mergedJobDataMap.get("applicationContext"); 
  30.        ExperienceSortService experienceSortService = (ExperienceSortService) application.getBean("experienceSortService"); 
  31.        try { 
  32.            logger.error("兑换中心积分排行榜周排行页面正在生成中..."); 
  33.            experienceSortService.querySort(getStatetime(7), getStatetime(0)); 
  34.            logger.error("兑换中心积分排行榜周排行页面生成完毕!"); 
  35.        }catch (Exception e) { 
  36.            logger.error("调用页面生成程序出错:"+e.toString()); 
  37.        } 
  38.     } 
  39.   
  40.      
  41.     /** 
  42.      * 当前时间的前dayCount天的日期 
  43.      * @description: 
  44.      * @time: 下午12:35:38 2010-11-19 
  45.      * @return 
  46.      * @throws ParseException 
  47.      */ 
  48.     public String getStatetime(int dayCount) throws ParseException{ 
  49.          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
  50.          Date date=new Date(); 
  51.          Long monday=date.getTime()-dayCount*24*60*60*1000
  52.          String preMonday = sdf.format(monday); 
  53.     return preMonday; 
  54.     }  

Spring配置信息,文件头:

  
  
  
  
  1. <beans xmlns="http://www.springframework.org/schema/beans" 
  2.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  3.         xmlns:aop="http://www.springframework.org/schema/aop" 
  4.         xmlns:tx="http://www.springframework.org/schema/tx" 
  5.         xsi:schemaLocation=" 
  6.             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
  7.             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
  8.             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 
  
  
  
  
  1. <bean id="myPageJob" class="org.springframework.scheduling.quartz.JobDetailBean"> 
  2.     <property name="jobClass"> 
  3.       <value>cn.com.member.timer.MyPageTimer</value> 
  4.     </property> 
  5.     <property name="jobDataAsMap"> 
  6.            <map> 
  7.            </map> 
  8.        </property> 
  9.     <property name="applicationContextJobDataKey" value="applicationContext"></property> 
  10. </bean> 
  11.  
  12. <bean id="myPageJobTimer" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
  13.    <property name="jobDetail"> 
  14.       <ref bean="myPageJob"></ref> 
  15.    </property> 
  16.    <property name="cronExpression"> 
  17.    <value>0 0 0 ? * MON</value><!-- 每周一的凌晨零点零分开始执行,仅一次 -->  
  18.    <!--<value>0/5 * * * * ?</value>--> <!-- 每隔5秒执行一次 --> 
  19. </property> 
  20. </bean>     
  21.      
  22. <!— 
  23. 启动定时任务,注意这里的ref bean    
  24. triggers:通过再添加其他的ref元素可在list中放置多个触发器 
  25. --> 
  26. <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
  27. <property name="triggers"> 
  28.    <list> 
  29.        <ref bean="myPageJobTimer"></ref> 
  30.    </list> 
  31. </property> 
  32. </bean> 

Spring3.0.5环境下项目中的实际应用

  
  
  
  
  1. <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"  
  2.        xmlns:context="http://www.springframework.org/schema/context" 
  3.        xmlns:task="http://www.springframework.org/schema/task" 
  4.        xsi:schemaLocation=" 
  5.     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd 
  6.     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
  7.     http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd> 
  8.      
  9. <task:annotation-driven /> <!--时器开关 --> 
  10. <!-- spring定时器配置  --> 
  11. <bean id="autoTaskExcuteUtil" class="com..utils.spring.businessafter.AutoTaskExecuteUtil"></bean> <!-- 这里配置简单的javaben就可以了,不需要实现任何接口 --> 
  12. <task:scheduled-tasks>   
  13.     <!-- 这里可以配置多个task标签任务 --> 
  14.     <task:scheduled ref="autoTaskExcuteUtil" method="run" cron="0 0/1 * * * ?"/><!-- 每一分钟检测一次是否有自动要执行的任务 --> 
  15. </task:scheduled-tasks> 

 

你可能感兴趣的:(spring,定时器)