Spring中Quartz的配置

来源:互联网 发布:网络签约作家 编辑:程序博客网 时间:2024/05/20 00:35

Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz,下面就看看在Spring中怎样配置Quartz:
首先我们来写一个被调度的类:

package com.kay.quartz;public class QuartzJob {    public void work() {        System.out.println("Quartz的任务调度!!!");    }}

Spring的配置文件quartz-config.xml:

<?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="quartzJob" class="com.kay.quartz.QuartzJob"></bean>    <!-- 定义调用对象和调用对象的方法 -->    <bean id="jobtask"        class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">        <!-- 调用的类 -->        <property name="targetObject">            <ref bean="quartzJob" />        </property>        <!-- 调用类中的方法 -->        <property name="targetMethod">            <value>work</value>        </property>    </bean>    <!-- 定义触发时间 -->    <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">        <property name="jobDetail">            <ref bean="jobtask" />        </property>        <!-- cron表达式 -->        <property name="cronExpression">            <value>2,15,20,25,30,35,40,45,50,55 * * * * ?</value>        </property>    </bean>    <!-- Cron 表达式包括以下 7 个字段: 秒 分 小时 月内日期 月 周内日期 年(可选字段) -->    <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->    <bean id="startQuertz" lazy-init="false" autowire="no"        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">        <property name="triggers">            <list>                <ref bean="doTime" />            </list>        </property>    </bean></beans>

测试程序:

package com.kay.quartz;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainTest {    public static void main(String[] args) {        System.out.println("Test start.");        ApplicationContext context = new ClassPathXmlApplicationContext(                "quartz-config.xml");        // 如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化        // context.getBean("startQuertz");        System.out.println("Test end..");    }}
0 0