spring-boot实战09:springboot中使用@scheduled创建定时任务

喻聪      2022-02-16     766

关键词:

我们在编写Spring Boot应用中经常会遇到这样的场景,比如:我需要定时地发送一些短信、邮件之类的操作,也可能会定时地检查和监控一些标志、参数等。

创建定时任务

在Spring Boot中编写定时任务是非常简单的事,下面通过实例介绍如何在Spring Boot中创建定时任务,实现每过5秒输出一下当前时间。

  • 在Spring Boot的主类中加入@EnableScheduling注解,启用定时任务的配置
1
2
3
4
5
6
7
8
9
10
 
@SpringBootApplication
@EnableScheduling
public class Application {
 
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
 
}
  • 创建定时任务实现类
1
2
3
4
5
6
7
8
9
10
11
@Component
public class ScheduledTasks {
 
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
 
@Scheduled(fixedRate = 5000)
public void reportCurrentTime() {
System.out.println("现在时间:" + dateFormat.format(new Date()));
}
 
}
  • 运行程序,控制台中可以看到类似如下输出,定时任务开始正常运作了。
2016-05-15 10:40:04.073  INFO 1688 --- [           main] com.didispace.Application                : Started Application in 1.433 seconds (JVM running for 1.967)
现在时间:10:40:09
现在时间:10:40:14
现在时间:10:40:19
现在时间:10:40:24
现在时间:10:40:29522
现在时间:10:40:34

关于上述的简单入门示例也可以参见官方的Scheduling Tasks

@Scheduled详解

在上面的入门例子中,使用了@Scheduled(fixedRate = 5000) 注解来定义每过5秒执行的任务,对于@Scheduled的使用可以总结如下几种方式:

  • @Scheduled(fixedRate = 5000) :上一次开始执行时间点之后5秒再执行
  • @Scheduled(fixedDelay = 5000) :上一次执行完毕时间点之后5秒再执行
  • @Scheduled(initialDelay=1000, fixedRate=5000) :第一次延迟1秒后执行,之后按fixedRate的规则每5秒执行一次
  • @Scheduled(cron="*/5 * * * * *") :通过cron表达式定义规则

完整示例Chapter4-1-1

spring-boot学习

springboot介绍:第1课    简单的介绍springboot这个微服务框架;快速实战springboot:第2课    程序员的第一课:写运行helloworld;    介绍项目结构;    如何在idea中配置热部署;    简单的测试;     查看详情

docker实战系列——第四话--将你的spring-boot应用进行容器化的几种常见玩法

背景docker从一个火的一塌糊涂的技术,到成为人尽皆知的基本技能已经是1-2年前的事情了,本章节的内容,意在记录和整理自己在工作和学习过程中,对于应用做容器化并推送到镜像仓库的方案和工具选择以及使... 查看详情

2020最新大厂高频微服务面试总结:spring-cloud+spring-boot+dubbo(面试题+笔记+项目实战)

话不多说,直接上题:SpringCloud面试题什么是SpringCloud?使用SpringCloud有什么优势?服务注册和发现是什么意思?SpringCloud如何实现?SpringCloud和dubbo区别?SpringBoot和SpringCloud的区别?负载平衡的意义什么&#x... 查看详情

docker实战系列——第四话--将你的spring-boot应用进行容器化的几种常见玩法

背景docker从一个火的一塌糊涂的技术,到成为人尽皆知的基本技能已经是1-2年前的事情了,本章节的内容,意在记录和整理自己在工作和学习过程中,对于应用做容器化并推送到镜像仓库的方案和工具选择以及使... 查看详情

从spring-boot开始深入理解spring系列——spring-boot使用servletsfilterlistenerinterceptor(代码片段)

文章目录基础概念理解对比深入理解:原理详解生命周期、执行顺序的理解实战:示例应用项目实战应用场景附源码下载参考博客基础概念理解servletServlet是一种运行服务器端的java应用程序,具有独立于平台和协议的... 查看详情

某医院的实战渗透测试(组合拳)(代码片段)

...ps://blog.51cto.com/u_12632800/4998813https://www.hacking8.com/bug-product/Spring-Boot/Spring-Boot-%E8%8E%B7%E5%8F%96%E8%A2%AB%E6%98%9F%E5%8F%B7%E8%84%B1%E6%95%8F%E7%9A%84%E5%AF%86%E7%A0%81%E7%9A%84%E6%98%8E%E6%96%87.html发现存在heapdump路径,访问/web/actuator/heapdump进行下载。he... 查看详情

springboot2.6重磅发布!!!(代码片段)

...伙伴们可以在这里找到:https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.6-Release-Notes。你可以结合SpringBoot2.6的官方文档来学习,地址:https://docs.spring.io/spring-boot/docs/current/reference/html/index.html。info端点暴露 Java运行... 查看详情

idea打包spring-boot项目(jar)

1.打开项目,点击按钮(如下图),或右击项目选中‘OpenModuleSettings’进入projectStructure( 快捷键Ctrl+Shift+Alt+S或者File->ProjectStructure )选中‘Artifacts’,点击中间的绿色+号 查看详情

redis 的 spring-boot 安全共享会话

】redis的spring-boot安全共享会话【英文标题】:spring-bootsecuritysharesessionbyredis【发布时间】:2018-10-2108:17:09【问题描述】:我有一个spring-boot安全演示,我想与redis共享会话。我在pom.xml中添加了一些代码<dependency><groupId>org.... 查看详情

springboot揭秘与实战附录-springboot公共配置

SpringBoot公共配置,配置application.properties/application.yml文件中。摘自:http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html#========================================= 查看详情

Spring-Boot 不适用于 Flyway

】Spring-Boot不适用于Flyway【英文标题】:Spring-BootisnotworkingwithFlyway【发布时间】:2015-04-1304:27:09【问题描述】:我正在为基于Spring的Web应用程序使用Spring-Bootv1.1.10.RELEASE。我的数据库是Postgres,并使用Flyway进行数据库迁移。postgress... 查看详情

无法使用 Spring-Boot 创建多个数据源

】无法使用Spring-Boot创建多个数据源【英文标题】:UnabletocreatemultipledatasourceswithSpring-Boot【发布时间】:2017-04-1712:22:51【问题描述】:tomcat出现以下错误:09:06:18,168WARNING[org.apache.tomcat.jdbc.pool.PooledConnection](ServerServiceThreadPool--6)Notl 查看详情

在 spring-boot 中使用一个模板引擎渲染多个后缀

】在spring-boot中使用一个模板引擎渲染多个后缀【英文标题】:rendermultiplesuffixeswithonetemplateengineinspring-boot【发布时间】:2017-09-3017:53:28【问题描述】:我创建了两个thymleaf解析器并将它们添加到模板引擎中,因此我可以在spring-bo... 查看详情

Spring-boot删除javascript确认消息

】Spring-boot删除javascript确认消息【英文标题】:Spring-bootdeletejavascriptconfirmationmessage【发布时间】:2020-02-2614:35:09【问题描述】:在我的Springboot系统中,当我选择删除按钮时,我需要有一个javascript弹出消息来确认删除。但是,当... 查看详情

GraphQL Spring-boot 查询过滤

】GraphQLSpring-boot查询过滤【英文标题】:GraphQLSpring-bootQueryfiltering【发布时间】:2018-08-2907:09:27【问题描述】:我正在使用GraphQLSpring-boot库来构建GraphQLAPIhttps://github.com/graphql-java/graphql-spring-boot我有一个架构typeCarid:ID!model:Stringbrand... 查看详情

助力springboot自动配置的条件注解conditionalonxxx分析--springboo

注:该源码分析对应SpringBoot版本为2.1.0.RELEASE1前言本篇接如何分析SpringBoot源码模块及结构?--SpringBoot源码(二)上一篇分析了SpringBoot源码结构及各个模块pom之间的关系后,那么此篇开始就开始解开SpringBoot新特性之一--自动配置... 查看详情

用户画像理论和实战

什么是用户画像用户标签体系1)数据指标2)标签加工3)标签存储4)标签兜底用户标签管理1)标签质量2)标签血缘3)标签特征提取用户人群圈定1)临时人群2)行为人群3)标签人群用户人... 查看详情

用户画像理论和实战

什么是用户画像用户标签体系1)数据指标2)标签加工3)标签存储4)标签兜底用户标签管理1)标签质量2)标签血缘3)标签特征提取用户人群圈定1)临时人群2)行为人群3)标签人群用户人... 查看详情