Spring Task定时任务
来源:互联网 发布:网络科技产品 编辑:程序博客网 时间:2024/05/18 01:33
Spring框架自带的异步执行(TaskExecutor)和任务调度(TaskScheduler)接口。
task任务调度配置:spring-tasks.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:task="http://www.springframework.org/schema/task" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation=" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd default-lazy-init="> <context:annotation-config></context:annotation-config> <!-- spring扫描注解的配置 --> <context:component-scan base-package="com.levi.test.task"></context:component-scan> <!--开启这个配置,spring才能识别@Scheduled注解 --> <task:annotation-driven mode="proxy" scheduler="testScheduler"></task:annotation-driven> <task:scheduler id="testScheduler" pool-size="10"></task:scheduler> </beans>
任务调度实现代码:TestTask.java
package com.levi.test.task; import java.text.SimpleDateFormat;;import java.util.Calendar;import java.util.Date; import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component; @Component("TestTask")public class TestTask { //每天凌晨4:40执行 @Scheduled(cron = "0 40 4 * * ?") public void TestTask() { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date factInPlaceDate = new Date(); Calendar beforeCd = Calendar.getInstance(); beforeCd.setTime(factInPlaceDate); beforeCd.add(Calendar.MONTH, -1); Date beforeFactDate = beforeCd.getTime(); String beforeMonthDate = sdf.format(beforeFactDate); System.out.println("实际到位日期减一个月:" + beforeMonthDate); Calendar afterCd = Calendar.getInstance(); afterCd.setTime(factInPlaceDate); afterCd.add(Calendar.MONTH, +1); Date afterFactDate = afterCd.getTime(); String afterMonthDate = sdf.format(afterFactDate); System.out.println("实际到位日期加一个月:" + afterMonthDate); } }在spring 4.x中已经不支持7个参数的cronin表达式了,要求必须是6个参数。cron表达式的格式如下:
{秒} {分} {时} {日期(具体哪天)} {月} {星期}
- 秒:必填项,允许的值范围是0-59,支持的特殊符号包括
,
-
*
/
,,
表示特定的某一秒才会触发任务,-
表示一段时间内会触发任务,*
表示每一秒都会触发,/
表示从哪一个时刻开始,每隔多长时间触发一次任务。 - 分:必填项,允许的值范围是0-59,支持的特殊符号和秒一样,含义类推
- 时:必填项,允许的值范围是0-23,支持的特殊符号和秒一样,含义类推
- 日期:必填项,允许的值范围是1-31,支持的特殊符号相比秒多了
?
,表示与{星期}互斥,即意味着若明确指定{星期}触发,则表示{日期}无意义,以免引起冲突和混乱。 - 月:必填项,允许的值范围是1-12(JAN-DEC),支持的特殊符号与秒一样,含义类推
- 星期:必填项,允许值范围是1~7 (SUN-SAT),1代表星期天(一星期的第一天),以此类推,7代表星期六,支持的符号相比秒多了
?
,表达的含义是与{日期}互斥,即意味着若明确指定{日期}触发,则表示{星期}无意义。
比如下面这个cron表达式:
// 表达的含义是:每半分钟触发一次任务30 * * * * ?
0 0
- Spring Task 定时任务
- Spring-Task 定时任务
- spring task 定时任务
- Spring Task定时任务
- Spring Task定时任务
- Spring Task定时任务
- Spring-task 定时任务
- Spring task定时任务
- Spring Task定时任务
- Spring task定时任务
- Spring Task定时任务
- Spring Task定时任务
- Spring-Task 创建定时任务
- Spring-Task 定时任务调度
- spring task定时任务实现
- 深入浅出Spring task定时任务
- Spring task实现定时任务
- spring task 定时任务实现
- SpringMVC教程--json使用详解
- C# 循环
- Struts2值栈
- node.js基础(二)
- 【IMWeb训练营作业】用Vue做任务列表To do list
- Spring Task定时任务
- Java compiler level does not match the version of the installed Java project facet.
- node.js基础(三)
- 摘抄
- Android SDK Manager 下载速度慢的问题
- [Leetcode] 95. Unique Binary Search Trees II 解题报告
- python yield学习心得
- C# 封装
- 玩坏了的深度学习