zoukankan      html  css  js  c++  java
  • Spring中使用Quartz之MethodInvokingJobDetailFactoryBean配置任务

    Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz。

    Spring中使用Quartz的3种方法(MethodInvokingJobDetailFactoryBean,implements Job,extends QuartzJobBean);

    以下为在Spring中怎样配置Quartz:

    首先写一个被调度的类:

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

    Spring的配置文件quartz-job-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.test.quartz.QuartzJob"></bean>
            <!-- 定义调用对象和调用对象的方法 -->
            <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
                <!-- 调用的类 -->
                <property name="targetObject" ref="quartzJob"/>
                <!-- 调用类中的方法 -->
                <property name="targetMethod" value="work"/>
            </bean>
            <!-- 定义触发时间 -->
            <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
                <property name="jobDetail" ref="jobtask"/>
                <!-- cron表达式 -->
                <property name="cronExpression" value="10,15,20,25,30,35,40,45,50,55 * * * * ?"/>
            </bean>
            <!-- 总管理类 如果将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.test.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-job-config.xml");
            //如果配置文件中将startQuertz bean的lazy-init设置为false 则不用实例化
            //context.getBean("startQuertz");
            System.out.print("Test end..");
        }
    }

    启动Mian程序就可以了

  • 相关阅读:
    计算机组成原理小结
    selenium基本操作
    selenium实现网易邮箱的登录注册
    如何安装selenium框架
    2020年目标
    个人对软件测试的认识
    java b2b2c电商系统javashop7.2发布
    基于脚本引擎的运费架构分享
    模拟支付宝微信回调
    Javashop电商系统7.2发布
  • 原文地址:https://www.cnblogs.com/JoeyWong/p/9306496.html
Copyright © 2011-2022 走看看