• springboot 使用quartz+XML格式处理定时任务


      网上查了许多关于springboot与quartz资料,发现使用XML配置的很少,简单整理了下,算是定时任务入门参考吧。

    • 在pom.xml文件中,添加配置
           <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-quartz</artifactId>
            </dependency>
    • 创建任务定时处理类 SysDataJob
    package service;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.springframework.stereotype.Service;
    
    @Service
    public class SysDataJob  {
        private final Log log = LogFactory.getLog(SysDataJob.class);
    
        public void deleteInfo() {
            log.info("Job start");
            System.out.println("Job 数据处理");
        }
    
    }
    • 在resources文件下,创建quartz-config.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!--定时删除数据库数据任务-->
        <!-- 配置Job类 -->
        <bean id="sysDataJob" class="service.SysDataJob"></bean>
        <!-- 配置JobDetail -->
        <bean id="springQtzJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <!-- 执行目标job -->
            <property name="targetObject" ref="sysDataJob"></property>
            <!-- 要执行的方法 -->
            <property name="targetMethod" value="deleteInfo"></property>
            <property name="concurrent" value="false"></property><!--配置为false不允许任务并发执行-->
        </bean>
        <!-- 配置tirgger触发器 -->
        <bean id="cronTrigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
            <!-- jobDetail -->
            <property name="jobDetail" ref="springQtzJob"></property>
            <!-- cron表达式,执行时间每10秒执行一次 -->
            <!-- 可以根据自己的需求指定执行时间 -->
            <property name="cronExpression" value="0/10 0/1 0/1 * * ? "></property>
        </bean>
        <!-- 配置调度工厂 -->
        <bean id="springJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
            <property name="triggers">
                <list>
                    <ref bean="cronTrigger1"></ref>
                    <!-- <ref bean="cronTrigger2"></ref>-->
                </list>
            </property>
    
        </bean>
    </beans>

    在应用程序启动时,添加注解,指定xml路径 @ImportResource("classpath:quartz-config.xml")

    package com.howdy.quartzsimple;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.ImportResource;
    
    @SpringBootApplication
    @ImportResource("classpath:quartz-config.xml")
    public class QuartzSimpleApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(QuartzSimpleApplication.class, args);
        }
    
    }
    • 完整的目录结构,最后打印日志,是每10秒执行一次

        源码下载:https://download.csdn.net/download/haojuntu/13184110

  • 相关阅读:
    Dora.Interception,为.NET Core度身打造的AOP框架 [3]:多样化拦截器应用方式
    Dora.Interception,为.NET Core度身打造的AOP框架 [2]:以约定的方式定义拦截器
    Dora.Interception,为.NET Core度身打造的AOP框架 [1]:更加简练的编程体验
    TechEmpower最新一轮的性能测试出炉,ASP.NET Core依旧表现不俗
    [文章汇总]ASP.NET Core框架揭秘[最近更新:2018/10/31]
    依赖注入[8]: .NET Core DI框架[服务消费]
    依赖注入[7]: .NET Core DI框架[服务注册]
    依赖注入[6]: .NET Core DI框架[编程体验]
    依赖注入[5]: 创建一个简易版的DI框架[下篇]
    依赖注入[4]: 创建一个简易版的DI框架[上篇]
  • 原文地址:https://www.cnblogs.com/personblog/p/14030746.html
Copyright © 2020-2023  润新知