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程序就可以了

  • 相关阅读:
    linux进阶1
    linux中使用mysql数据库
    计算机是如何启动的
    宿主机mount虚拟机镜像文件
    SHA1算法原理
    KVM初始化过程
    关于内存对齐
    thread_info&内核栈
    gradlew compileDebug --stacktrace -info
    Android listview子控件的的点击事件(转)
  • 原文地址:https://www.cnblogs.com/JoeyWong/p/9306496.html
Copyright © 2011-2022 走看看