首先在配置文件头部的必须要有:

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表达式相关推荐

  1. spring定时任务 时间配置cron表达式

    1.Spring quartz 1.1 单纯针对时间的设置规则 org.springframework.scheduling.quartz.CronTriggerBean允许你更精确地控制任务的运行时 ...

  2. spring定时任务(Scheduled)运行阻塞不执行/Redission分布式锁阻塞问题

    spring定时任务(Scheduled)运行阻塞不执行/Redission分布式锁阻塞问题 最近项目中发现一个bug,排查了很久,最后发现问题所在,在此记录一下. 问题描述: 项目运行一段时间后,c ...

  3. springboot 定时任务@Scheduled cron表达式、fixedRate、fixedDelay、initialDelay和@EnableAsync、@Async的结合使用

    定时任务几种形式 1,cron自定义表达式 @Scheduled(cron = "${statistics.ams.day-cron}")private void test() { ...

  4. Spring定时任务注解@Scheduled+@EnableAsync用法详解(简单说明+应用场景+demo源代码+执行过程分析)

    @Scheduled 由Spring定义,用于将方法设置为调度任务,可实现方法的周期或定时执行.想单独使用Scheduling,需引入spring-context这个依赖.spring-boot-st ...

  5. spring定时任务:@Scheduled

    1. 在applicationContext.xml里加入task的命名空间 xmlns:task="http://www.springframework.org/schema/task&q ...

  6. 浅聊下Spring Task定时器的Cron表达式

    前文: 1.Spring Task 是 Spring 提供的轻量级定时任务工具,也就意味着不需要再添加第三方依赖了,相比其他第三方类库更加方便易用. 2.spring task是spring 3.0以 ...

  7. 实战讲解Spring定时任务:@Scheduled(图+文+源码)

    1 缘起 最近看到有些定时任务的项目, 使用了Spring自带的定时任务系统,通过添加@Scheduled注解的方式实现, 并且,使用了不只cron表达式的方式实现定时执行, 恍然大悟,原来@Sche ...

  8. spring定时任务(@Scheduled注解)

    (一)在xml里加入task的命名空间 xmlns:task="http://www.springframework.org/schema/task" http://www.spr ...

  9. SpringBoot Scheduled Cron表达式范例记录

    也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好. 使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式: 基于注解(@Scheduled) 基于接口(Schedul ...

最新文章

  1. c++ 使用vs2010调用 win32api
  2. 正则表达式的常用操作符
  3. MySQL - 日常操作二 备份还原
  4. 力扣算法001_两数之和
  5. java velocity 邮件_邮件集成java mail + 读取邮件模板
  6. A. Regular Bracket Sequences
  7. Dos命令删除添加新服务
  8. 08-07 性能测试--性能监听平台
  9. hdu1247Hat’s Words(trie树)
  10. const和define在值定义上的区别
  11. 高德地图MapABC报错
  12. 打破少儿编程学习进度中的技术关
  13. PHP学习案例9 双色球
  14. 论文笔记 AAAI 2021|what the role is vs. What plays the role: Semi-supervised Event Argument Extraction v
  15. 《那些年啊,那些事——一个程序员的奋斗史》——40
  16. 2022.3.11 MATLAB课程作业
  17. 重复造轮子,对此你的看法
  18. Siamese Capsule Networks 翻译 (孪生胶囊网络)
  19. 如何在C语言游戏代码中加入音乐?
  20. PHP urldecode()与urlencode()函数

热门文章

  1. 设置默认settings文件_Django 学习笔记系列 之 settings.py 设定
  2. 安卓收藏功能怎么实现_收藏!微信群接龙功能怎么操作?
  3. 织梦php首页老是自动恢复,dede首页网址自动加上index.html问题解决方法
  4. java awt 监视器_java – 停止所有Awt / Swing线程和监视器和东...
  5. 杭州中国移动java待遇_【中国移动杭州研发中心Java面试】移动杭研社招java中级面试-看准网...
  6. python输出多个随机数_怎么用python输出随机数
  7. mac 4k分辨率 字太小 27寸 hidpi_4K,就在眼前!视网膜级桌面显示器AOC U2790PQU评测报告...
  8. java short long_谈谈Java中整数类型(short int long)的存储方式
  9. 周长相等的正方形面积一定相等_习题创编——周长相等的长方形面积(20200108)...
  10. python怎么定义空矩阵_Python创建一个空的稀疏矩阵