spring 定时器功能例子

来源:互联网 发布:安全知识网络 编辑:程序博客网 时间:2024/05/16 06:57

以前自己写过定时器,用java Timer类做的,比较粗糙,今天看到spring可以提供定时器了,试了一下,效果不错,简单的用了下,跟大家共享下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    <!-- 这种配置可以精确几点执行定时任务 -->

    <bean id="cronQuartzClock" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail">
            <ref bean="quartzClock"></ref>
        </property>
        <property name="cronExpression">
            <value>0 12 20 * * ?</value><!--定时在任何月份任何日期(不管星期几)的22点52分0秒 -->
            <!--
                一个cron表达式有到少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 每个工作日的工作时间 - 区间 * 通配符 ?
                你不想设置那个字段
            -->
        </property>
    </bean>
    <!--第三步 启动定时任务,注意这里的ref bean -->
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="cronQuartzClock"></ref>
            </list>
        </property>
    </bean>

<bean id="quartzClock" class="org.springframework.scheduling.quartz.JobDetailBean">
   <property name="jobClass">
    <value>com.telecom.js.cep.timer.MyTimer</value>
   </property>
</bean>


<!-- 第二步 调度定时任务 -->

<!--这种配置与第一种方法效果一样

   <bean id="quartzClockTask" class="org.springframework.scheduling.quartz.SimpleTriggerBean">

    <property name="jobDetail">

     <ref bean="quartzClock"/>

    </property>

    <property name="startDelay">

     <value>6000</value>

      这里是服务启动后延时多少时间,开始计时任务,单位ms

    </property>

    <property name="repeatInterval">

     <value>6000</value>

        这里是每隔多长时间就进行一次计时任务,单位ms

    </property>

   </bean>

-->
</beans>

package com.telecom.js.cep.timer;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.scheduling.quartz.QuartzJobBean;


public class MyTimer extends QuartzJobBean{


    @Override
    protected void executeInternal(JobExecutionContext arg0)
            throws JobExecutionException {
        // TODO Auto-generated method stub
        System.out.println("QuartzClock..!QuartzClock....!.......");
    }

}

package com.telecom.js.cep.timer;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class Test {

    public static void main(String[] args) {
            ApplicationContext ctx = new ClassPathXmlApplicationContext("properties/timerContext.xml");
            //只需要启动spring就可以了
//            MyTimer m = ctx.getBean("");
    }
}

spring中还有多种配置方法,需要一些jar,自己在网上收把

转载http://jakemanse.blog.51cto.com/1198141/294224


原创粉丝点击