分享

Spring定时器

 pengx 2009-07-31
applicationContext.xml
Xml代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3. xmlns="http://www./schema/beans"  
  4. xmlns:xsi="http://www./2001/XMLSchema-instance"  
  5. xsi:schemaLocation="http://www./schema/beans http://www./schema/beans/spring-beans-2.0.xsd">  
  6.   
  7.   
  8. <bean id="mesBean" class="cn.xg.spring.Message" abstract="false"  
  9.    lazy-init="default" autowire="default" dependency-check="default">  
  10.    <property name="title">  
  11.     <value>标题</value>  
  12.    </property>  
  13. </bean>  
  14.   
  15. <!-- spring定时器 -->  
  16. <!-- 方法一 -->  
  17. <!-- 第一步 声明一个定时任务,该类extends java.util.TimerTask -->  
  18. <bean id="clock" class="cn.xg.spring.Clock"></bean>  
  19.   
  20. <!-- 第二步 调度定时任务,把声明的定时任务注入进来,并设置定时参数 -->  
  21. <bean id="scheduledClock" class="org.springframework.scheduling.timer.ScheduledTimerTask">  
  22.    <property name="timerTask">  
  23.     <ref bean="clock"></ref>  
  24.    </property>  
  25.    <property name="period">  
  26.     <value>5000</value>  
  27.     <!--这里是每隔多长时间就进行一次计时任务,单位ms-->  
  28.    </property>  
  29.    <property name="delay">  
  30.     <value>5000</value>  
  31.     <!--这里是服务启动后延时多少时间,开始计时任务,单位ms-->  
  32.    </property>  
  33. </bean>  
  34.   
  35. <!-- 启动定时任务,如果有多个定时任务,则重复步骤一,二,然后把第二步设置的beany放在下面的list列表中.此方法不能精确几点运行定时任务 -->  
  36. <bean class="org.springframework.scheduling.timer.TimerFactoryBean">  
  37.    <property name="scheduledTimerTasks">  
  38.     <list>  
  39.      <ref bean="scheduledClock"></ref>  
  40.     </list>  
  41.    </property>  
  42. </bean>  
  43.   
  44. <!-- 方法二 -->  
  45. <!-- 第一步 声明一个定时任务,注意不是直接声明,而是声明一个JobDetailBean,通过jobClass属性设置一个定时对象 -->  
  46. <bean id="quartzClock" class="org.springframework.scheduling.quartz.JobDetailBean">  
  47.    <property name="jobClass">  
  48.     <value>cn.xg.spring.QuartzClock</value>  
  49.    </property>  
  50. </bean>  
  51.   
  52. <!-- 第二步 调度定时任务 -->  
  53. <!--这种配置与第一种方法效果一样    
  54.    <bean id="quartzClockTask" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
  55.     <property name="jobDetail">  
  56.      <ref bean="quartzClock"/>  
  57.     </property>  
  58.     <property name="startDelay">  
  59.      <value>6000</value>  
  60.       这里是服务启动后延时多少时间,开始计时任务,单位ms   
  61.     </property>  
  62.     <property name="repeatInterval">  
  63.      <value>6000</value>  
  64.         这里是每隔多长时间就进行一次计时任务,单位ms   
  65.     </property>  
  66.    </bean>  
  67. -->  
  68. <!-- 这种配置可以精确几点执行定时任务 -->  
  69. <bean id="cronQuartzClock" class="org.springframework.scheduling.quartz.CronTriggerBean">  
  70.    <property name="jobDetail">  
  71.     <ref bean="quartzClock"></ref>  
  72.    </property>  
  73.    <property name="cronExpression">  
  74.     <value>0 52 22 * * ?</value><!--定时在任何月份任何日期(不管星期几)的22点52分0秒 -->  
  75.      <!-- 一个cron表达式有到少6个(也可能是7个)由空格分隔的时间元素.从左到右,这些元素的定义如下:   
  76.       1.秒(0-59)   
  77.       2.分钟(0-59)   
  78.       3.小时(0-23)   
  79.       4.月份中的是期(1-31)   
  80.       5.月份(1-12或SUN-DEC)   
  81.       6.星期中的日期(1-7或SUN-SAT)   
  82.       7.年份(1970-2099)    
  83.      例子:   
  84.       0 0 10,14,16 * * ? 每天上午10点,下午2点和下午4点   
  85.       0 0,15,30,45 * 1-10 * ? 每月前10天每隔15分钟   
  86.       30 0 0 1 1 ? 2012 在2012年1月1日午夜过30秒时   
  87.       0 0 8-5 ? * MON-FRI 每个工作日的工作时间   
  88.         
  89.       - 区间   
  90.       * 通配符   
  91.        你不想设置那个字段   
  92.      -->  
  93.    </property>  
  94.      
  95. </bean>  
  96. <!--第三步 启动定时任务,注意这里的ref bean -->  
  97. <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
  98.    <property name="triggers">  
  99.     <list>  
  100.      <ref bean="cronQuartzClock"></ref>  
  101.     </list>  
  102.    </property>  
  103. </bean>  
  104. </beans>  


clock.java

Java代码 复制代码
  1. import java.util.TimerTask;   
  2.   
  3. public class Clock extends TimerTask{   
  4.   
  5. @Override  
  6. public void run() {   
  7.      
  8.    System.out.println("clock..!clock....!.......");   
  9.      
  10. }   
  11.   
  12. }  



QuartzClock .java


Java代码 复制代码
  1. import org.quartz.JobExecutionContext;   
  2. import org.quartz.JobExecutionException;   
  3. import org.springframework.scheduling.quartz.QuartzJobBean;   
  4.   
  5. public class QuartzClock extends QuartzJobBean {   
  6.   
  7. @Override  
  8. protected void executeInternal(JobExecutionContext arg0)   
  9.     throws JobExecutionException {   
  10.      
  11.    System.out.println("QuartzClock..!QuartzClock....!.......");   
  12. }   
  13.   
  14. }   
  15.   
  16.   
  17. SpringTest .java   
  18. package cn.xg.spring;   
  19.   
  20. import org.apache.log4j.Logger;   
  21. import org.springframework.context.ApplicationContext;   
  22. import org.springframework.context.support.ClassPathXmlApplicationContext;   
  23.   
  24. public class SpringTest {   
  25.   
  26. /**  
  27. * @param args  
  28. */  
  29. public static Logger log = Logger.getLogger(SpringTest.class);   
  30.   
  31. public static void main(String[] args) {   
  32.      
  33.   
  34.      
  35.    //第一种写法(加载配置文件)   
  36.    ApplicationContext ctx = new    
  37.    ClassPathXmlApplicationContext("applicationContext.xml");    
  38.      
  39.    //第二种写法   
  40.    //ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");   
  41.    //ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");   
  42.      
  43.    //加载多个配置文件   
  44.    // ApplicationContext ctx = new ClassPathXmlApplicationContext(    
  45.         //new String[]{"applicationContext.xml","applicationContext2.xml"} );   
  46.      
  47.   
  48. }   
  49.   
  50. }  


所需要的jar包:

spring.jar;quartz-all-1.6.0.jar;commons-collections.jar;可能还要commons-*.jar

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多