Spring Quartz定时器的配置

        项目开发中,程序或多或少需要定时触发。例如,常见的统计报表程序、邮件的定时发送,以及一些数据需要定时的去触发,从而达到实时更新。接下来,就简单的介绍下,使用Spring提供的MethodInvokingJobDetailFactoryBean 代理类,Quartz通过该代理类直接调度任务类的某个函数,Quartz的org.quartz.Trigger类描述了何时及以怎样的频度运行一个Quartz工作,Spring提供了两个触发器SimpleTriggerBean和CronTriggerBean,当需要在规定的时间执行一次或在规定的时间段以一定的时间间隔重复触发执行Job时,SimpleTriggerBean就可以满足要求,所以SimpleTriggerBean是指定工作的执行频度。在Spring配置文件如下:

<!-- 第一步: 配置好要定时调用的业务类 -->
<bean id="messageService" class="com.service.MessageService" />
<!-- 第二步: 定义好具体要使用类的哪一个业务方法 -->
<bean id="printTimerJob"
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
    <!-- 目标bean -->
    <property name="targetObject" ref="messageService" />
    <!-- 要执行目标bean的哪一个业务方法 -->
    <property name="targetMethod" value="printLog" />
    <!-- 是否并发 -->
    <property name="concurrent" value="false"/>
</bean>
<!-- 简单的触发器 -->
<!-- 第三步: 定义触发时间 -->
<bean id="printTimerTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
    <property name="jobDetail" ref="printTimerJob" />
    <!-- 启动后10秒钟触发,注:这里的10000指的是毫秒,1000毫秒=1秒 -->
    <property name="startDelay" value="10000" />
    <!-- 每间隔30秒触发一次 -->
    <property name="repeatInterval" value="30000" />
</bean>
<!-- 启动定时器 -->
<!-- 第四步 Spring触发工厂,注意这里的ref bean ,如果注释掉这一段,触发器将不会启动-->
<bean id="schedulerFactoryBean"
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <!-- triggers属性接受一组触发器 -->
    <property name="triggers">
        <list>
            <ref bean="printTimerTrigger" />
        </list>
    </property>
</bean>

CronTriggerBean指定工作的准确运行时间。

<bean id="printTimerTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="printTimerJob" />
    <!-- 属性cronExpression告诉何时触发,"0/30"代表从第 0 秒开始,每 30 秒一次。"*",表示每一分钟都会触发 -->
    <property name="cronExpression" value="0/30 * * * * ?" />
</bean>

配置好后,重启tomcat就直接生效,可以看到定义的触发器在执行对应的功能,每30秒执行一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值