spring 定时器对java 中的定时的任务做了很好的处理、要是在项目中用到了需要使用定时处理的操作,可以很方便的使用spring 来完成。以下是一个用timer 和Quartz 使用的例子。
 
timer:spring配置
 <bean id="lzstoneTimeTask" class="com.timer.test.LzstoneTimeTask"/>
 <bean id="taskInfo" class="org.springframework.scheduling.timer.ScheduledTimerTask">
  <property name="delay" value="1000"></property>
  <property name="period" value="4000"></property>
  <property name="timerTask" ref="lzstoneTimeTask"></property>
 </bean>
 <bean id="timerFactory" class="org.springframework.scheduling.timer.TimerFactoryBean">
  <property name="scheduledTimerTasks">
   <ref local="taskInfo"/>
  </property>
 </bean>
 
java:code
public class LzstoneTimeTask extends TimerTask {
 @Override
 public void run() {
  System.out.println("进入当前方法!");
  SimpleDateFormat fromat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  String date=fromat.format(new Date());
  System.out.println("获得系统的时间是:"+date);
  System.out.println("退出当前方法!");
 }
}
 
 
 
 
Quartz:spring配置
  <bean id="lzstoneQuartzTask" class="com.timer.test.LzstoneQuartzTask"/>  
  <bean id="schedulerJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
         <property name="targetObject" ref="lzstoneQuartzTask"/>
         <property name="targetMethod" value="execute"/>
         <property name="concurrent" value="false"/>
     </bean>
     <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean" >
          <property name="jobDetail" ref="schedulerJobDetail"/>
          <property name="cronExpression">
              <value>0/10 * * * * ?</value>
          </property>
      </bean>
     <bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
         <property name="triggers">
             <list>
                 <ref local="cronTrigger"/>
             </list>
         </property>
 </bean>
 
public class LzstoneQuartzTask{
  public void execute(){
  System.out.println("进入当前方法!");
  SimpleDateFormat fromat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  String date=fromat.format(new Date());
  System.out.println("获得系统的时间是:"+date);
  System.out.println("退出当前方法!");
  }
 
}
 
test:method。
 
 public static void main(String[] args) {
  //ApplicationContext ac = new FileSystemXmlApplicationContext("src/spring.xml");
  System.out.println("start it now !");
  ApplicationContext context = new ClassPathXmlApplicationContext("/spring0.xml");
  System.out.println("end it now !");
 }
 
 
动态cronExpression的配置介绍
 
 <!--
   一个cronExpression表达式有到少6个(也可能是7个)由空格分隔的时间元素.从左到右,这些元素的定义如下: 
      1.秒(0-59) 
      2.分钟(0-59) 
      3.小时(0-23) 
      4.月份中的是期(1-31) 
     5.月份(1-12或SUN-DEC) 
      6.星期中的日期(1-7或SUN-SAT) 
      7.年份(1970-2099)  
     例子: 
      0 0 10,14,16 * * ? 每天上午10点,下午2点和下午4点 
      0 0,15,30,45 * 1-10 * ? 每月前10天每隔15分钟 
      30 0 0 1 1 ? 2012 在2012年1月1日午夜过30秒时 
      0 0 8-5 ? * MON-FRI 每个工作日的工作时间        
      - 区间
      * 通配符 
      ? 你不想设置那个字段 
 --> 
时间配置:
"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触发
每隔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 * * ?