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就是强大

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/722486.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

揭示西周与汉唐时期的纺织工艺

在中国新疆这片充满神秘色彩的土地上,每一次的考古发掘都仿佛是对历史的一次深情回望,揭示出中华民族悠久而灿烂的文明史。其中,新疆出土的西周和汉唐时期的织物,更是以其精美绝伦的工艺和独特的审美风格,让我们对古代…

加速Python库安装:一键切换pip源,提升下载速度与成功率

pip换源 一、为什么要换源二、如何换源1. 临时换源2. 永久换源Windows系统Linux和macOS系统 3. 使用镜像站工具 三、常见的国内源四、注意事项五、总结 在Python开发中,我们经常需要使用pip来安装各种库。然而,由于网络环境的原因,直接使用pi…

《山西教育》教学版是什么级别的刊物?

《山西教育》教学版是什么级别的刊物? 《山西教育(教学版)》创刊于1956年,是由山西教育报刊社主办的教学刊物。山西省一级期刊,是“宣传教育政策,关注教育热点,传播先进经验,提供教改资讯”的权威性期刊&a…

C语言入门系列:判断和循环常踩的5个坑

文章目录 1. if代码块不带大括号问题描述示例与分析解决办法 2. if条件和大括号之间加了一个分号问题描述示例与分析解决办法 3. 使用号判断相等问题描述示例与分析解决办法 4. while循环的无限循环问题描述示例与分析解决办法 5. for循环中的off-by-one错误问题描述示例与分析…

Matlab只选取自己需要的数据画图

在Matlab作图的时候,经常会在同一个坐标系中作很多数据的图,如下图所示: 这就会导致不同数据所作的线会重叠在一起,不利于数据分析。如果只想对比几个数据的趋势,直接修改代码太过麻烦,可通过Matlab的绘图…

Python酷库之旅-比翼双飞情侣库(15)

目录 一、xlrd库的由来 二、xlrd库优缺点 1、优点 1-1、支持多种Excel文件格式 1-2、高效性 1-3、开源性 1-4、简单易用 1-5、良好的兼容性 2、缺点 2-1、对.xlsx格式支持有限 2-2、功能相对单一 2-3、更新和维护频率低 2-4、依赖外部资源 三、xlrd库的版本说明 …

开源新纪元:ChatTTS——引领对话式文本转语音的新潮流

✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点赞、关注、收藏、评论,是对我最大…

帕金森病患者应对腿部无力的方法

帕金森病是一种慢性神经系统退化性疾病,主要影响运动系统,导致运动功能障碍。患者常见的症状包括肌肉僵硬、运动迟缓、静止性震颤和姿势不稳。这些症状可能会导致患者在行走时感到腿软无力,尤其是在起步或转弯时更为明显。 帕金森病患者在日常…

Linux 图形化编程GTK3.0 快速入门之布局

GTK3.0 布局之水平布局 核心语法: 水平布局容器: 水平布局容器的创建: GtkWidget *gtk_hbox_new( gboolean homogeneous, gint spacing ); homogeneous:容器内控件是否大小一致( gboolean 取值为TRUE 或 FALSE ) spacing&#…

C++语法01 基本框架

目录 什么是 C ? 新建源程序 保存源程序 程序基本框架 #include using namespace std; int main() return 0; 编译 运行 什么是 C ? C语言,是基本的程序设计语言之一【程序设计语言,简单的来说就是编写代码来操控计…

【深度学习驱动流体力学】OpenFOAM框架剖析

目录 1. applications 目录solvers:存放各种求解器。mesh:网格生成相关工具。 2. src 目录3. tutorials 目录其他主要目录和文件参考 OpenFOAM 源码文件目录的框架如下,OpenFOAM 是一个开源的计算流体力学 (CFD) 软件包,其源码文件结构设计精…

Maven 插件列表详解

Maven 是一个强大的项目管理和构建工具,广泛应用于 Java 项目中。作为一款优秀的构建管理工具,Maven 不仅提供了标准化的项目结构和依赖管理,还通过其丰富的插件系统,极大地扩展了其功能和灵活性。无论是代码编译、测试、打包&…

小程序分页新写法

// pages/query/query.js import {request } from ../../utils/request; Page({/*** 页面的初始数据*/data: {tabClickIndex: ,page: 1,limit: 10,listData: []},/*** 生命周期函数--监听页面加载*/onLoad(options) {this.getList()},/*** 生命周期函数--监听页面初次渲染完成*…

uniapp运行到模拟器(联想模拟器)

记录一下uniapp项目运行到联想模拟器的流程 先配置一下模拟器端口 填写对应的adb路径,也就是模拟器安装路径下的adb.exe的路径 然后打开模拟器的设置,搜索版本找到版本号,多次点击打开开发者模式 进入开发者选项,打开USB调试 …

QT 中QcomboBox控件的详细用法

在Qt中,QComboBox 是一个用于选择下拉列表中的项目的控件。它继承自 QWidget 并提供了许多成员函数来操作和管理这个下拉列表。以下是一些常用的 QComboBox 成员函数及其基本用法: 构造函数 QComboBox(QWidget *parent nullptr): 创建一个新的 QCombo…

职业探索-性能测试01-性能工程师成长路径-性能测试的核心概念-性能测试的全周期概览

职业探索-性能测试01-性能工程师成长路径-性能测试的核心概念-性能测试的全周期概览 参考来源 极客时间专栏:高楼的性能测试实战30讲 课程链接:https://time.geekbang.org/column/intro/100042501 性能测试分析的能力阶梯视图 性能工程师 真正的性能…

FuTalk设计周刊-Vol.034

🔥AI漫谈 热点捕手 1、反转反转再反转!OpenAI“内斗”风波始末 故事还远远没有结束,一场“宫斗”解决不了商业世界影响下科技发展的路线之争,或许未来还将有很多“选择”将困扰这家年轻的企业,这是AI领域发展下必将经…

【论文阅读】-- 时间空间化:用于深度分类器训练的可扩展且可靠的时间旅行可视化

Temporality Spatialization: A Scalable and Faithful Time-Travelling Visualization for Deep Classifier Training 摘要1 引言2 动机3 问题定义4 方法论4.1 时空复合体4.2 复数约简 5 实验6 相关工作7 结论参考文献 摘要 时间旅行可视化回答了深度分类器的预测是如何在训练…

【单片机毕业设计选题24015】-基于物联网的家用智能充电桩计费系统设计

系统功能: 采用STM32最小系统板控制 1. 通过IM1281B电能计量模块读取系统电压电流功率电能等信息 2. 通过ESP8266WiFi模块连接阿里云 3. 使用RFID模块刷卡 4. 继电器模块控制充电 5. 12864OLED模块显示系统信息 6. 开启充电但检测不到系统电压时蜂鸣器模块报警。 主要功…

delphi 开发app

好的工具用起来就会顺手,很多Delphi从业者用惯了Delphi工具,在面对移动APP称王的时代似乎有力使不出。现在不用再担心JAVA语言的一些特性,太纠结了。我们直接用Delphi XE7开发吧。虽然Delphi XE2开始就支持移动开发了,但这中间的五…