Spring 定时任务之 @Scheduled cron表达式
首先在配置文件头部的必须要有:
xmlns:task="http://www.springframework.org/schema/task"
- 1
其次xsi:schemaLocation必须为其添加:
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task.xsd
- 1
- 2
然后spring扫描过程必须涵盖定时任务类所在的目录:
<context:component-scan base-package="com.xx.xx" />
- 1
com.xx.xx属于定时任务类的父级甚至更高级
然后设置动作启用定时任务
<task:annotation-driven/>
- 1
最后设置任务类
import org.springframework.context.annotation.Lazy; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component;@Component @Lazy(value=false) public class MyQuartzs {@Scheduled(cron = "*/5 * * * * ?")//每隔5秒执行一次public void test() throws Exception {System.out.println("Test is working......");}//@Scheduled(cron = "0 0 1 * * ?")//每天凌晨1点整//@Scheduled(cron = "0 30 0 * * ?")//每天凌晨0点30分//@Scheduled(cron = "0 */60 * * * ?")//1小时处理一次 }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
=====================================================
=====================================================
=====================================================
一个基于Spring boot的一个demo:
Java配置中开户对Scheduled的支持
import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableScheduling;@Configuration @EnableScheduling public class ScheduleConfig { }
一个定时的例子:
import com.xiaoyi.sns.cache.constant.Constants; import com.xiaoyi.sns.cache.constant.Product; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.BoundListOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service;/*** Created by tang.cheng on 2016/9/1.*/ @Service//将这个对象加入Spring容器中 public class RedisCleaner {private static final Logger LOGGER = LoggerFactory.getLogger(RedisCleaner.class);@Autowiredprivate RedisTemplate redisTemplate;@Scheduled(cron = "0 0 3 * * ?")public void demoSchedule() {LOGGER.info(redisTemplate.hasKey("hello"))} }
一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。
按顺序依次为
秒(0~59)
分钟(0~59)
小时(0~23)
天(月)(0~31,但是你需要考虑你月的天数)
月(0~11)
天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
7.年份(1970-2099)
其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?.
0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
有些子表达式能包含一些范围或列表
例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”
“*”字符代表所有可能的值
因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天
“/”字符用来指定数值的增量
例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟
在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样
“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值
当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
“L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写
但是它在两个子表达式里的含义是不同的。
在天(月)子表达式中,“L”表示一个月的最后一天
在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT
如果在“L”前有具体的内容,它就具有其他的含义了
例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五
注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
字段 允许值 允许的特殊字符
秒
|
0-59
|
, - * /
|
||
分
|
0-59
|
, - * /
|
||
小时
|
0-23
|
, - * /
|
||
日期
|
1-31
|
, - * ? / L W C
|
||
月份
|
1-12 或者 JAN-DEC
|
, - * /
|
||
星期
|
1-7 或者 SUN-SAT
|
, - * ? / L C #
|
||
年(可选)
|
留空, 1970-2099
|
, - * /
|
Spring 定时任务之 @Scheduled cron表达式相关推荐
- spring定时任务 时间配置cron表达式
1.Spring quartz 1.1 单纯针对时间的设置规则 org.springframework.scheduling.quartz.CronTriggerBean允许你更精确地控制任务的运行时 ...
- spring定时任务(Scheduled)运行阻塞不执行/Redission分布式锁阻塞问题
spring定时任务(Scheduled)运行阻塞不执行/Redission分布式锁阻塞问题 最近项目中发现一个bug,排查了很久,最后发现问题所在,在此记录一下. 问题描述: 项目运行一段时间后,c ...
- springboot 定时任务@Scheduled cron表达式、fixedRate、fixedDelay、initialDelay和@EnableAsync、@Async的结合使用
定时任务几种形式 1,cron自定义表达式 @Scheduled(cron = "${statistics.ams.day-cron}")private void test() { ...
- Spring定时任务注解@Scheduled+@EnableAsync用法详解(简单说明+应用场景+demo源代码+执行过程分析)
@Scheduled 由Spring定义,用于将方法设置为调度任务,可实现方法的周期或定时执行.想单独使用Scheduling,需引入spring-context这个依赖.spring-boot-st ...
- spring定时任务:@Scheduled
1. 在applicationContext.xml里加入task的命名空间 xmlns:task="http://www.springframework.org/schema/task&q ...
- 浅聊下Spring Task定时器的Cron表达式
前文: 1.Spring Task 是 Spring 提供的轻量级定时任务工具,也就意味着不需要再添加第三方依赖了,相比其他第三方类库更加方便易用. 2.spring task是spring 3.0以 ...
- 实战讲解Spring定时任务:@Scheduled(图+文+源码)
1 缘起 最近看到有些定时任务的项目, 使用了Spring自带的定时任务系统,通过添加@Scheduled注解的方式实现, 并且,使用了不只cron表达式的方式实现定时执行, 恍然大悟,原来@Sche ...
- spring定时任务(@Scheduled注解)
(一)在xml里加入task的命名空间 xmlns:task="http://www.springframework.org/schema/task" http://www.spr ...
- SpringBoot Scheduled Cron表达式范例记录
也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好. 使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式: 基于注解(@Scheduled) 基于接口(Schedul ...
最新文章
- c++ 使用vs2010调用 win32api
- 正则表达式的常用操作符
- MySQL - 日常操作二 备份还原
- 力扣算法001_两数之和
- java velocity 邮件_邮件集成java mail + 读取邮件模板
- A. Regular Bracket Sequences
- Dos命令删除添加新服务
- 08-07 性能测试--性能监听平台
- hdu1247Hat’s Words(trie树)
- const和define在值定义上的区别
- 高德地图MapABC报错
- 打破少儿编程学习进度中的技术关
- PHP学习案例9 双色球
- 论文笔记 AAAI 2021|what the role is vs. What plays the role: Semi-supervised Event Argument Extraction v
- 《那些年啊,那些事——一个程序员的奋斗史》——40
- 2022.3.11 MATLAB课程作业
- 重复造轮子,对此你的看法
- Siamese Capsule Networks 翻译 (孪生胶囊网络)
- 如何在C语言游戏代码中加入音乐?
- PHP urldecode()与urlencode()函数
热门文章
- 设置默认settings文件_Django 学习笔记系列 之 settings.py 设定
- 安卓收藏功能怎么实现_收藏!微信群接龙功能怎么操作?
- 织梦php首页老是自动恢复,dede首页网址自动加上index.html问题解决方法
- java awt 监视器_java – 停止所有Awt / Swing线程和监视器和东...
- 杭州中国移动java待遇_【中国移动杭州研发中心Java面试】移动杭研社招java中级面试-看准网...
- python输出多个随机数_怎么用python输出随机数
- mac 4k分辨率 字太小 27寸 hidpi_4K,就在眼前!视网膜级桌面显示器AOC U2790PQU评测报告...
- java short long_谈谈Java中整数类型(short int long)的存储方式
- 周长相等的正方形面积一定相等_习题创编——周长相等的长方形面积(20200108)...
- python怎么定义空矩阵_Python创建一个空的稀疏矩阵