SpringBoot 结合 Quartz 简单Demo

本文介绍了在Spring Boot项目中使用Quartz实现定时任务的需求。开发者遇到内存溢出问题,鼓励读者研究并探讨解决方案。文章详细展示了配置、监听器、定时任务及具体任务的编写过程,特别提醒在定时任务中注入Service时要注意避免NullPointerException。

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

首先,废话两句楼主是在开发中遇到具体需求,要用到定时器,那么大致说下两种定时器:

定时器 Quartz TimerTask
执行时间 可以通过cron表达式精确到特定时间执行 TimerTask不能
效率 每次执行任务都创建一个新的任务类对象 每次使用同一个任务类对象
对异常的处理 不会因为异常,而导致定时器关闭,不再执行循环任务。 抛出异常后,再也没有执行此任务了,并且定时器所在的线程也自动结束
消耗内存 大于TimerTask 小于Quartz
使用 整合使用,使用简单。 一旦出现异常,需要在异常的时候重构事务,需要工厂模式and代理模式的加入。

可以根据自己的水平 and 需求选择一个合适自己的上手。下面我们上干货。

PS:Quartz 会产生内存溢出的问题,楼主还没有仔细研究,有兴趣的同学可以研究下,欢迎给我的邮箱(513933837@qq.com)发邮件一起探讨。

开发环境:Spring boot + Maven + mybatis 。

开发工具:idea

① 那么我们首先看需要的包,先看看pom.xml文件:

        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.2.1</version>
        </dependency>
        <dependency><!-- 该依赖必加,里面有sping对schedule的支持 -->
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>

我只截取了部分,除了这些以外,如果你是spring boot 的项目一定还要有相关配置文件,别指望我会贴出来,做梦!摔!

② 先写一个监听器保证项目启动的时候会调用到,我们的定时任务,代码如下:

package task;

import org.quartz.SchedulerException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;

/**
* @author Lucky
* @Description 监听器
* @Date 15:08 2018/5/23
* @Param
* @return
**/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值