SpringBoot2.x 与Quartz集成

本文详细介绍如何在Spring Boot项目中使用Quartz实现定时任务。从引入依赖到配置线程池,再到创建任务和触发器,最后定义Scheduler,全程XML方式配置。特别关注自定义线程池提高任务执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 首先需要引入mvn依赖。只需引入spring-boot-starter-quartz这一个依赖就可以。

    org.springframework.boot
    spring-boot-starter-quartz

  2. 接下来就是配置:quartz.properties
    org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool//线程池
    org.quartz.threadPool.threadCount=10 //线程数量
    org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore //基于内存模式

  3. 配置好了以后,开始我们的第一个定时任务。
    (1)先建立一个task,

    ```
     public class MyFirstJob {
    	    private Logger logger = LoggerFactory.getLogger(MyFirstJob.class);
    	    public void execute(){
    	        logger.info("定时任务执行");
    	    }
    	}
    ```
    

    (2) 这里采用的是xml方式配置定时任务:

    <bean id="myFirstTask" class="com.didi.es.boss.morgan.task.MyFirstJob"/>
    
        <bean id="myFirstJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
            <property name="targetObject" ref="myFirstTask"/>
            <property name="targetMethod" value="execute"/>
            <property name="concurrent"   value="false"/>
        </bean>
    

    (3)定义触发器:

    <!-- 调度触发器 -->
    <bean id="myFirstJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
         <property name="jobDetail"      ref="myFirstJob"/>
         <property name="cronExpression" value="*/2 * * * * ?"/>//每两秒执行一次。
    </bean>
    

    (4)定义Scheduler
    Scheduler就是Quartz的控制中心,所有任务都是由它来设施。

    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
                <list>
                    <ref bean="myFirstJobTrigger"/>
                </list>
        </property>
        <property name="taskExecutor" ref="jobExecutor"/>
    </bean>
    

    !!!重点说一下,这里jobExecutor可以自己根据业务需求配置线程池。

    <!-- 线程执行器配置,用于任务注册 -->
    <bean id="jobExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
        <property name="corePoolSize" value="10"/>  //核心线程10个。
        <property name="maxPoolSize" value="50"/>
        <property name="queueCapacity" value="500"/>
    </bean>
    

4.已经写好了任务,接下来就是运行了,启动application.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值