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

  • 相关阅读:
    一句话说明分布式与集群的区别以及什么是分布式集群
    docker Unhandled exception: Filesharing has been cancelled
    sqlserver查询数据的所有表名和行数
    docker push失败:denied: requested access to the resource is denied
    windows docker 共享文件权限设置
    ubuntu 16.4 docker 镜像加速
    fastreport 旋转 竖排
    基于Huggingface使用BERT进行文本分类的fine-tuning
    基于Embedding深度学习算法综述
    机器学习基础知识
  • 原文地址:https://www.cnblogs.com/JoeyWong/p/9306496.html
Copyright © 2020-2023  润新知