当前位置: 首页 > news >正文

java-SpringBoot执行定时任务-任务调度-@EnableScheduling和@Scheduled

文章目录

  • java借助springBoot框架,执行定时任务
    • 0. 项目地址
    • 1. 需求分析
    • 2、新建springBoot项目
    • 3. 编写定时任务
      • 3.1 开启调度任务
      • 3.2 编写定时任务方法

java借助springBoot框架,执行定时任务

0. 项目地址

https://github.com/OrangeHza/JavaDemo

1. 需求分析

可能有一些需要定时执行的任务,如:

  • 每隔2s执行一次
  • 每天凌晨3点30分执行一次
  • 每周一凌晨0点执行一次

通过springBoot框架很容易实现

注意方法只能是空参和无返回值的方法

2、新建springBoot项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

删掉多余的目录,最终结构如下:
在这里插入图片描述
新建了一个类:TaskService

3. 编写定时任务

3.1 开启调度任务

引导类加注解:@EnableScheduling

package cn.whu.schedule;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication
@EnableScheduling // 开启调度任务 定时执行Bean中被@Scheduled修饰的方法(定时任务)
public class ScheduleApplication {public static void main(String[] args) {SpringApplication.run(ScheduleApplication.class, args);}}

在这里插入图片描述

3.2 编写定时任务方法

注意必须是空参无返回值的方法,需要传递参数需要自己建域了,如:静态对象、静态成员

package cn.whu.schedule.service;import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;@Service
public class TaskService {@Scheduled(fixedDelay = 2000) // 每隔2s执行一次public void task01() {System.out.println("每2秒执行一次的任务:  " + nowTime());}// cron 表达式格式为 秒 分 时 日 月 星期 年,支持通配符和特定值设置。@Scheduled(cron = "0 30 3 * * ?") // 每天凌晨3点30分执行一次public void task02() {// 执行任务逻辑System.out.println("每天凌晨3点30分执行的任务: " + nowTime());}// cron 表达式格式为 秒 分 时 日 月 星期 年,支持通配符和特定值设置。@Scheduled(cron = "0 0 0 ? * MON") // 每周一凌晨0点执行任务   ?指的是哪天都行public void task03() {// 执行任务逻辑System.out.println("每周一执行的任务: " + nowTime());}public String nowTime() {// 获取当前时间LocalDateTime now = LocalDateTime.now();// 定义格式化模板DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EEEE", Locale.CHINESE);// 格式化当前时间String formattedDateTime = now.format(formatter);// 输出格式化后的时间return formattedDateTime;}
}

启动引导类ScheduleApplication的main方法,可以看到控制台打印:

在这里插入图片描述
成功,boot就是强大

相关文章:

  • JDBC简介
  • css记录:三维变化之transform-style
  • python数据分析-连云港石化基地2023年用电量分析
  • JAVA反射代码
  • go匿名函数
  • ES8新特性:async函数
  • [python学习]--模块管理
  • 面向龙芯LoongArch平台的AMD GPU补丁解决了一个“巨大平台错误“
  • 厂里资讯之异步通知文章上下架
  • state和store的使用场景
  • 公有云_私有云_云平台_服务器安全组_按量付费_vpc私有网络/专有网络原理---分布式云原生部署架构搭建005
  • wifi MLME
  • C++ 65 之 模版的局限性
  • 力扣1206--跳表
  • 笔记-python里面的xlrd模块详解
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • avalon2.2的VM生成过程
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CSS实用技巧干货
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • ES6--对象的扩展
  • GraphQL学习过程应该是这样的
  • nginx 配置多 域名 + 多 https
  • PV统计优化设计
  • zookeeper系列(七)实战分布式命名服务
  • 前端路由实现-history
  • 前端面试之CSS3新特性
  • 浅谈web中前端模板引擎的使用
  • 深入浅出webpack学习(1)--核心概念
  • 算法---两个栈实现一个队列
  • 微服务框架lagom
  • 用jQuery怎么做到前后端分离
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 阿里云移动端播放器高级功能介绍
  • ​TypeScript都不会用,也敢说会前端?
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • #if 1...#endif
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (Java入门)学生管理系统
  • (PySpark)RDD实验实战——取一个数组的中间值
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (纯JS)图片裁剪
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)程序员疫苗:代码注入
  • (转)可以带来幸福的一本书
  • (转)详解PHP处理密码的几种方式
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET基础篇——反射的奥妙
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验