Spring Schedule:Spring boot整合Spring Schedule实战讲解定时发送邮件的功能
🎉🎉欢迎光临,终于等到你啦🎉🎉
🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀
🌟持续更新的专栏
本专栏带你从Spring入门到入魔
这是苏泽的个人主页可以看到我其他的内容哦
简介
本篇详细讲解定时任务如何构建 文末有详细的实战案例 定时发送邮件
介绍
定时任务调度技术是一种用于在预定时间或间隔时间执行任务的技术。
它允许开发人员根据特定的时间表安排任务的执行,可以是一次性任务或周期性任务。定时任务调度技术通常用于需要定期执行的任务,例如数据备份、定时报告生成、定时数据同步等。
Spring中的定时任务调度模块简介
定时任务调度技术提供了一种方便和可靠的方式来执行重复性或定期性的任务。它可以帮助开发人员自动化一些常规的任务,减少人工干预和减轻人力负担。
Spring Schedule的基本用法
需要在项目的 Maven 依赖中添加 Spring Schedule 的相关依赖项。可以在项目的 pom.xml 文件中添加以下依赖项:
然后,您需要在 Spring 配置文件中启用定时任务调度功能。可以通过在配置类上添加注解 @EnableScheduling
来启用定时任务调度。
- 创建定时任务方法:
在您的 Spring Bean 中创建一个方法,该方法将作为定时任务的执行体。可以通过在方法上添加注解 @Scheduled
来标识该方法是一个定时任务。
- 配置定时任务执行时间表达式:
可以使用 @Scheduled
注解的属性来配置定时任务的执行时间表达式。例如,可以使用 fixedDelay
属性来指定任务的执行间隔时间,或者使用 cron
属性来指定任务的执行时间规则。
- 运行定时任务:
当 Spring 应用启动时,定时任务将自动开始执行。您可以查看日志或其他输出来确认定时任务的执行情况。
定时任务的执行方式:
在 Spring Schedule 中,有几种常见的定时任务执行方式:
- 固定延迟执行(fixedDelay):在当前任务完成后,等待一定的延迟时间后再次执行任务。
- 固定频率执行(fixedRate):以固定的频率执行任务,不考虑任务的执行时间。
- Cron 表达式执行:使用标准的 Cron 表达式配置任务的执行时间规则,可以实现更灵活的定时任务调度。
fixedDelayTask()
方法使用@Scheduled(fixedDelay = 5000)
注解,配置了任务的执行间隔为每隔5秒执行一次。当任务执行完成后,会等待5秒再次执行。
fixedRateTask()
方法使用@Scheduled(fixedRate = 3000)
注解,配置了任务的执行频率为每隔3秒执行一次。不考虑任务的执行时间,即使上一次任务还未完成,也会按照固定频率执行。
cronTask()
方法使用@Scheduled(cron = "30 * * * * *")
注解,配置了任务的执行时间规则为每分钟的第30秒执行一次。使用标准的 Cron 表达式可以实现更灵活的定时任务调度。
Cron表达式详解
-
定时任务的参数和返回值处理
定时任务方法可以接受参数,并且可以有返回值。下面是对定时任务参数和返回值的处理方式的讲解:
- 传递参数给定时任务方法:
定时任务方法可以接受参数,您可以在方法的参数列表中声明所需的参数。例如,如果您希望定时任务方法接受一个字符串参数,可以按如下方式定义方法:
当定时任务被触发时,Spring Schedule 将自动将参数传递给定时任务方法。您可以根据需要在方法内部使用这些参数。
-
处理定时任务方法的返回值:
定时任务方法可以有返回值,但是返回值通常被忽略,因为定时任务的执行是异步的,没有实际的调用方来处理返回值。因此,通常情况下,定时任务方法的返回值应该为 void
。
定时任务的错误处理与异常处理:
在定时任务的执行过程中,可能会出现错误或异常。下面是对定时任务错误处理和异常处理的讲解:
-
处理定时任务方法中的异常:
如果定时任务方法中抛出了异常,Spring Schedule 将捕获这些异常并记录日志。默认情况下,异常不会向上层传播,也不会打断定时任务的执行。因此,您可以在定时任务方法中处理异常,例如进行异常日志记录或错误处理。
-
定时任务的错误处理策略:
如果您希望在定时任务方法抛出异常时中断任务的执行,并采取特定的错误处理策略,可以通过配置 @EnableScheduling
注解的 exceptionHandler
属性来实现。
在上述示例中,我们创建了一个名为 MySchedulingConfig
的配置类,并在其中配置了一个 TaskScheduler
bean。通过在 @EnableScheduling
注解上指定 exceptionHandler
属性,将错误处理逻辑与定时任务调度器关联起来。
配置多个定时任务:
如果您需要配置多个定时任务,可以在同一个类中定义多个定时任务方法,或者创建多个带有定时任务注解的 Spring Bean。
并发执行多个定时任务:
默认情况下,Spring Schedule 使用单个线程执行所有的定时任务。如果您需要并发执行多个定时任务,可以配置一个具有适当线程池大小的任务调度器。
控制定时任务的执行顺序:
Spring Schedule 默认情况下不提供显式的控制定时任务执行顺序的方式。定时任务的执行顺序取决于任务调度器的实现和底层线程池的行为。
如果您需要在定时任务之间确保特定的执行顺序,可以考虑使用互斥或其他同步机制来实现。例如,您可以使用 synchronized
关键字或 Lock
接口来控制任务的互斥执行。
实战案例:定时发送邮箱
首先引入依赖
去QQ邮箱
开启这个服务
自己收一下验证码 确认 就OK了
配置你的的基本配置
编写邮箱发送方法
最终效果
- 点赞
- 收藏
- 关注作者
评论(0)