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

Spring3定时任务

简介

Spring 内部有一个 task 是 Spring 自带的一个设定时间自动任务调度,提供了两种方式进行配置,一种是注解的方式,而另外一种就是 XML 配置方式了;注解方式比较简洁,XML 配置方式相对而言有些繁琐,但是应用场景的不同,两者又各有优点,所以具体使用还是根据需求来划分;因为任务调度这样的需求,通常改动都是比较多的,如果用注解的方式改动就变得麻烦了,必须去重新编译;所以更多的时候推荐使用XML配置的方式

使用 XML 配置

  1. 定义一个 Task 类,添加一个测试方法
public class Task {public void cron() {System.out.println(new Date() + ", 定时任务执行中 ...");}
}
  1. 在 spring.xml 配置文件中添加如下配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:task="http://www.springframework.org/schema/task"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"><!-- 定时任务 --><bean id="task" class="com.review.spring.model.Task"/><!-- 创建任务池 -->   <task:scheduler id="taskScheduler" pool-size="100" /><!-- 定义定时任务 -->   	<task:scheduled-tasks scheduler="taskScheduler"><!-- 表示周一到周五的每分钟的第五秒执行--><task:scheduled ref="task" method="cron" cron="5 * * * * MON-FRI"/></task:scheduled-tasks>
</beans>
  1. 在测试类中初始化容器,定时任务就会自动执行
public class TestTask {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/spring.xml");}
}

使用注解配置

  1. 定义 Task 类,添加如下代码

public class Task {(cron="0/2 * * * * *") // 每隔 2 秒运行一次public void cron() {System.out.println(new Date() + ", 定时任务执行中 ...");}
}
  1. 在 spring.xml 配置文件中添加如下配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:task="http://www.springframework.org/schema/task"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-3.0.xsd"><context:component-scan base-package="com.review.spring"/><task:annotation-driven/> <!-- 如果是代码式配置, 需要在配置类添加注解  -->
</beans>

cronExpression 的配置说明
cron 表达式是一个字符串,字符串以 5 或 6 个空格隔开,分为 6 或 7 个域,每一个域代表一个含义,cron 有如下两种语法格式:

(1) Seconds Minutes Hours DayofMonth Month DayofWeek Year

(2) Seconds Minutes Hours DayofMonth Month DayofWeek(常用)
在这里插入图片描述
在这里插入图片描述
注意:Spring 中的任务调度以及其 ThreadPoolTaskScheduler 中的 cron 表达式是不支持 L W 字符的;所以最后一天和最近的工作日就无法定义在 cron 表达式中

扩展:如何实现每月最后一天执行任务?
方式一:每个月的最后一天,因为不同的月份最后一天是不一样的,但是好在有个范围:28 – 31;那么我们可以结合 cron 表达式 + 代码实现控制每月的最后一天执行任务;代码如下

(cron = "0 0 0 28-31 * ?")
public void execute() {final Calendar c = Calendar.getInstance();// 判断是不是最后一天if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)) {// 你的业务逻辑代码}
}

方式二:在 cron 表达式中,L 表示最后一个的意思,所以可定义为

(cron = "* * * L * ?")

前提是定义的 cron 表达式支持 L W 指定,例如:Quartz 等框架,如果是 Spring 自带定时器则不支持

相关文章:

Spring3定时任务

简介 Spring 内部有一个 task 是 Spring 自带的一个设定时间自动任务调度&#xff0c;提供了两种方式进行配置&#xff0c;一种是注解的方式&#xff0c;而另外一种就是 XML 配置方式了;注解方式比较简洁&#xff0c;XML 配置方式相对而言有些繁琐&#xff0c;但是应用场景的不…...

数据库版本管理工具Flyway应用研究

目录1 为什么使用数据库版本控制2 数据库版本管理工具选型&#xff1a;Flyway、Liquibase、Bytebase、阿里 DMSFlywayLiquibaseBytebase阿里 DMS3 Flyway数据库版本管理研究3.1 参考资料3.2 Flyway概述3.3 Flyway原理3.4 Flyway版本和功能3.5 Flyway概念3.5.1 版本迁移&#xf…...

更换 Ubuntu 系统 apt 命令安装软件源

更换 Ubuntu 系统 apt 命令安装软件源清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/ 1. Ubuntu 的软件源配置文件 /etc/apt/sources.list MIRRORS -> 使用帮助 -> ubuntu https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ Ubuntu 系统 apt 命令安…...

2023年可见光通信(LiFi)研究新进展

可见光无线通信Light Fidelity&#xff08;LiFi&#xff09;又称“光保真技术”&#xff0c;是一种利用可见光进行数据传输的全新无线传输技术。LiFi是一种以半导体光源作为信号发射源&#xff0c;利用无需授权的自由光谱实现无线连接的新型无线通信技术&#xff0c;支持高密度…...

Greenplum的两阶段提交

注&#xff1a;本文章引自终于把分布式事务讲明白了&#xff01; 在前面的文章中&#xff0c;我们了解了单机库中的事务一致性实现以及分布式事务中的两阶段提交协议。大多数分布式系统都是采用了两阶段提交塄来保证事务的原子性&#xff0c;Greenplum也是采用了两阶段提交&am…...

多元回归分析 | CNN-BiLSTM卷积双向长短期记忆神经网络多输入单输出预测(Matlab完整程序)

多元回归分析 | CNN-BiLSTM卷积双向长短期记忆神经网络多输入单输出预测(Matlab完整程序) 目录 多元回归分析 | CNN-BiLSTM卷积双向长短期记忆神经网络多输入单输出预测(Matlab完整程序)预测结果评价指标基本介绍程序设计参考资料预测结果 评价指标 训练结束: 已完成最大轮…...

git命令行推送本地分支到远程仓库

之前说过Git与IDEA强强联合&#xff08;HTTPS协议连接&#xff09;那么如何使用命令行来推送代码呢&#xff1f; 如下图所示为一个基于layui的前端代码&#xff1a; 目录工作区文件&#xff1a; 本地内容就是将这些内容推送到远程仓库 首先使用git命令初始化git本地仓库&…...

在vscode中使用Typescript并运行

首先呢&#xff0c;我们在学习ts之前&#xff0c;需要先安装ts 1、安装 typescript npm install -g typescript //检查是否安装tsc -v ​ 2、生成配置文件&#xff0c;cd进入该文件夹&#xff0c;在控制台输 tsc --init ​ 此时我们就可以看到在ts文件夹下面出现了 一个tsco…...

【C++提高编程】C++全栈体系(十九)

C提高编程 第三章 STL - 常用容器 一、string容器 1. string基本概念 本质&#xff1a; string是C风格的字符串&#xff0c;而string本质上是一个类 string和char * 区别&#xff1a; char * 是一个指针string是一个类&#xff0c;类内部封装了char*&#xff0c;管理这个…...

Java版电能表协议解析源码(DL/T645-2007)、Modbus串口虚拟工具、网络串口调试工具分享

什么是Modbus通信协议Modbus串口调试工具Java版协议解析源码 网络与串口二合一调试助手TCPCOM&#xff1a; https://download.csdn.net/download/liuyuan_java/87454762 Modbus调试工具&#xff0c;模拟串口调试工具 https://download.csdn.net/download/liuyuan_java/874274…...

2023美赛选题建议 美国大学生数学建模竞赛ABCDEF题

选题建议和粗略思路已更新完毕 对于没有基础的同学来说CD两题上手难度较高&#xff0c;大家可以根据自己的实际情况选择最适合自己的题目&#xff0c;团队将持续更新各题后续内容&#xff0c;Q群322297051 A题主要难度就是建立第一问的模型&#xff0c;综合来看难度不大&…...

2023,想跳槽的可以再等等

今天讲讲跳槽。 金三银四即将开启&#xff0c;一些不满现状&#xff0c;被外界的“高薪”“好福利”吸引的人&#xff0c;一般就在这时候毅然决然地跳槽了。 跳槽是为了寻求更好的发展&#xff0c;但在跳槽前我们也不能确定下家就是更好的归宿&#xff0c;这就更加需要我们审…...

Java之滑动窗口详解

目录 一.滑动窗口 1.什么滑动窗口 2.滑动窗口的三要素 二.找到字符串中所有字母异位词 1.题目描述 2.问题分析 3.代码实现 三.字符串的排列 1.题目描述 2.问题分析 3.代码实现 四.考试的最大困扰度 1.题目描述 2.问题分析 3.代码实现 五.替换后的最长重复字符 …...

Webpack(应用一:基本使用,只需六步骤)

前言 上一篇文章已经说明了webpack的定义以及需求 本偏文章主要讲解webpack的基本使用 tips&#xff1a;现在以vscode编辑器来展示&#xff0c;只需要几个步骤就可以实现webpack的基本使用。 一、首先要安装node.js 1、不会安装node.js的&#xff0c;可以在网上自己找教程来…...

【Python小游戏】智商爆棚,推荐一款益智类亲子娱乐首选—某程序员老爸:成语编成填空“游戏”,贪玩女儿1天牢记500词(厉害了我的Python)

前言 成语填空想必大家都是十分熟悉的了&#xff0c;特别是有在上小学的家长肯定都有十分深刻的印象。 在我们的认知里看图猜成语不就是一些小儿科的东西吗&#xff1f; 当然了你也别小看了成语调控小游戏&#xff0c;有的时候知识储备不够&#xff0c;你还真的不一定猜得出…...

使用web3连接Georli测试网络

文章目录1.使用geth方式在终端2.写成脚本2.1 通过metamask &#xff08;现成的太复杂&#xff0c;搞不太来&#xff09;2.2 通过自己的接口3.通过truffle方式连接 &#xff08;不成功&#xff09;目前的工作情况是&#xff0c;已在remix写好执行合约并部署在Georli测试网络中&a…...

Python uWSGI 的安装配置

以 Ubuntu/Debian 为例&#xff0c;先安装依赖包&#xff1a; apt-get install build-essential python-dev Python 安装 uWSGI 1、通过 pip 命令&#xff1a; pip install uwsgi 2、下载安装脚本&#xff1a; curl http://uwsgi.it/install | bash -s default /tmp/uwsgi 将…...

033.Solidity入门——20函数的可视范围

修饰符可见性描述public在合约内和合约外都可以被访问&#xff0c;即合约内外部都可以调用该函数。这种类型的函数可以被合约内和合约外的任何地址调用。private只有在当前合约内可以被访问&#xff0c;即只有合约内可以调用该函数。这种类型的函数只能在合约内部被调用。exter…...

智能家居项目(三)之框架设计及框架代码文件工程建立

目录 一、智能家居项目框架设计草图 二、框架代码文件工程建立 三、添加声音识别模块的串口读取功能 一、智能家居项目框架设计草图 代码思路讲解&#xff1a; 1、一个指令工厂&#xff0c;一个控制工厂&#xff0c;实际上就是通过链表链起来的数据。具体怎么链接起来&…...

全网最全的Ansible中常用模块讲解

目录 前言 一、ansible实现管理的方式 二、Ad-Hoc执行方式中如何获得帮助 三、ansible命令运行方式及常用参数 四、ansible的基本颜色代表信 五、ansible中的常用模块 1、command 2、shell 3、script 4、copy 5、fetch 6、file 7、 unarchive 8、archive 9、h…...

linux程序分析工具

嵌入式调试工具1. nm2. addr2line3. readelf3.1 ELF 文件分类3.2 ELF文件组成3.3使用1. nm nm源于name&#xff0c;是linux下一个文本分析工具&#xff0c;可以罗列指定文件中的符号(函数名、变量&#xff0c;以及符号类型)。 nm命令参数如下&#xff1a; 用法&#xff1a;nm …...

Python3,2分钟掌握Doscoart库,你也能成为艺术家。

2行代码绘制水彩画1、引言2、 代码实战2.1 模块介绍2.2 模块安装2.3 代码示例2.3.1 创建默认图片2.3.2 设置参数创建图片2.3.3 查看设置参数2.3.4 查看配置2.3.5 保存配置2.3.6 加载配置2.3.7 导出配置文件2.3.7 生成Python代码2.3.8 调用文档3、总结1、引言 小屌丝&#xff1…...

1225057-68-0,Alkyne PEG4 TAMRA-5,四甲基罗丹明-四聚乙二醇-炔基TAMRA红色荧光染料连接剂

中英文别名&#xff1a;CAS号&#xff1a;1225057-68-0 | 英文名&#xff1a;5-TAMRA-PEG4-Alkyne |中文名&#xff1a;5-四甲基罗丹明-四聚乙二醇-炔基物理参数&#xff1a;CASNumber&#xff1a;1225057-68-0Molecular formula&#xff1a;C36H41N3O8Molecular weight&#x…...

Ae:解释素材

所谓解释素材 Interpret Footage&#xff0c;就是通过修改素材的某些属性&#xff08;像素长宽比、帧速率、颜色配置文件及 Alpha 通道类型等&#xff09;&#xff0c;让它能更好地参与到合成中去。Ae菜单&#xff1a;文件/解释素材快捷键&#xff1a;Ctrl Alt G在项目面板里…...

无文件攻击

无文件攻击是一种高级持续性威胁&#xff08;APT&#xff09;的攻击方式&#xff0c;它不会在目标系统的磁盘上留下可执行文件&#xff0c;而是利用系统内置的工具或脚本执行恶意代码&#xff0c;从而绕过传统的安全防护措施。无文件攻击的最大特点就是恶意代码直接在内存中运行…...

JS高级——数据类型

数据类型 基本类型 String: 任意字符串Number: 任意的数字boolean: true/falseundefined: undefinednull: null 对象类型 Object: 任意对象Function 一种特别的对象&#xff08;可以执行&#xff09;Array: 一种特别的对象 判断 typeof //不能区分数组与对象、null与obje…...

场景案例│数字员工在银行业的典型应用场景,效率及准确率“双高”

伴随数字经济的高速发展&#xff0c;企业数字化转型步伐不断加快&#xff0c;银行内部信息系统越趋复杂&#xff0c;业务处理的自动化及智能化需求日益旺盛。调查显示&#xff0c;数字员工为60~75%的银行流程带来约30~40%的效能提升&#xff0c;能够全面帮助银行在各场景流程中…...

2023美国大学生数学建模竞赛选题建议

总的来说&#xff0c;这次算是美赛环境题元年&#xff0c;以往没有这么多环境题目&#xff0c;大部分题目都是开放度相当高的题目。C君认为的难度&#xff1a;D>C>AE>BF&#xff0c;开放度&#xff1a;DF>ABE>C。A题 遭受旱灾的植物群落这次A题为环境类题目&…...

整合K8s+SpringBoot+gRpc

本文使用K8s当做服务注册与发现、配置管理&#xff0c;使用gRpc用做服务间的远程通讯一、先准备K8s我在本地有个K8s单机二、准备service-providerpom<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.…...

ROS 教程:使用 Moveit C++ 接口进行拾取和放置任务

文章目录 简介Moveit C++ 接口Gazebo 取放世界初始化界面拾取流程1.移动到原位2.将TCP放在蓝框上方3.打开夹具4. 将 TCP 移近物体5.关闭夹具6. 将 TCP 移至板上方7./8. 降低 TCP 并打开夹具使用 Moveit 避免碰撞将碰撞对象添加到 Moveit 规划组结论参考简介 本教程展示了如何使…...

不用开源做网站/抖音代运营大概多少钱一个月

修改当前路径&#xff0c;但是一重启就恢复原样export PATH/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/games 例如&#xff1a;该路径忘记加&path了 ubuntu命令行界面/bin/echo $PATH (查看当前启动路径) cat /etc/profile (查…...

网页制作师培训机构/安徽网站seo公司

今天在做即时通讯群聊时&#xff0c;调用MultiUserChat.getHostedRooms(conn, SmackTools.getInstance().conn.getServiceName());方法获取服务列表时总是出现空指针的情况。 当时出现这个错误的时候感觉是非怪的&#xff0c;因为参数&#xff1a;conn和服务名都不为空。而Mult…...

教育培训网站建设方案/东莞免费建站公司

之前项目中打包的apk安装到全面屏手机后,发现在应用下方出现了一大块黑色区域(如:小米8),只有在系统中设置适配全面屏才能让应用在全面屏手机中显示正常,但是这种方式并不友好,而且有些手机厂商可能也没有这种设置,所以还是需要我们再打包的时候就做一些相应的处理。 <activ…...

优秀网站赏析/怎么在百度免费推广

一个很影响用户体验的使用&#xff0c;就是文件传输失败&#xff0c;然后点了重发&#xff0c;还是失败。 一般用户遇到这个问题&#xff0c;任何APP被立刻卸载的几率也是有70%以上 因此迫在眉睫&#xff0c;但是好在我们公司这个项目没有推广太广&#xff08;对于我是压力没那…...

网站制作模板代码/爱站工具包怎么使用

仿网易彩票,最终要做成的效果如下&#xff1a; 一、分层搭建 1.新建一个项目&#xff0c;Lottery.只支持7.1以上坚屏。 2.将素材全部图片全部拉到相应的文件夹里。 3.选中Lottery--右键Show in Finder ,在Lottery文件夹下新建一个Classes&#xff0c;并分别分层成MVC文件夹。 4…...

镇江网站seo公司/线上培训

1 同时导出表和对应的索引(记下所用的时间)2 同时导入表和对应的索引(记下所用的时间)3 单独导出表(记录时间)4 单独导入表(记录时间)5 重建索引(记录时间)实验表和索引的信息如下&#xff1a;USER01aaron> select count(*) from test01;COUNT(*)----------4643904USER01aar…...