`

Spring 定时任务之 @Scheduled cron表达式

阅读更多

一个基于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);

    @Autowired
    private 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   , - * /
转载地址:http://biaoming.iteye.com/blog/39532

 

分享到:
评论

相关推荐

    Spring @Scheduled定时任务动态修改cron参数

    `@Scheduled`注解是Spring Framework中用于创建定时任务的重要工具,它允许开发者在不重启应用的情况下,实现定时任务的动态配置,特别是修改cron表达式来调整执行周期。 在Spring中,定时任务主要通过`@Scheduled`...

    Spring定时任务@Scheduled例子

    `@Scheduled`注解是Spring提供的一个强大工具,用于声明式地配置定时任务,无需编写复杂的线程管理和调度逻辑。在这个例子中,我们将深入探讨`@Scheduled`的用法以及与之相关的`task:scheduler`和`task:executor`。 ...

    计划任务Cron表达式生成

    "Cron表达式"是Linux系统中计划任务的核心,而Java社区通过`@Scheduled`注解和Quartz库等方式也引入了类似的概念,使得在Java应用中实现定时任务变得非常方便。 "Cron"这个词来源于北欧神话中的时间之神"Cronus",...

    spring boot @scheduled定时任务配置

    总结一下,Spring Boot的`@Scheduled`注解是实现定时任务的关键,配合cron表达式,我们可以轻松地创建按时间周期执行的作业。理解并熟练运用这些知识,能够帮助我们构建高效、自动化的后台任务系统。

    定时任务cron表达式生成.rar

    Spring框架则通过`@Scheduled(cron = "cron表达式")`,将方法标记为定时任务,根据给定的cron表达式自动执行。 使用这个“定时任务cron表达式生成”工具,用户可以直观地设置任务的执行频率,而无需手动编写复杂的...

    Spring Boot中的@Scheduled注解:定时任务的原理与实现

    ### Spring Boot中的@Scheduled注解:定时任务的原理与实现 #### 一、引言 在现代软件开发中,定时任务是一种非常常见的需求。无论是数据同步、定期清理缓存还是发送提醒邮件,都需要应用程序能够在特定的时间点...

    Cron表达式生成器java版(需要jdk1.8)

    cron表达式是Unix/Linux系统中用于定时任务调度的一种机制,而在Java中,通过Quartz、Spring框架等库,也可以使用cron表达式来实现定时任务。本项目提供的"Cron表达式生成器java版"是一个基于Java 1.8的工具,能够...

    应用再html、jsp上的自动生成Cron表达式

    - **Spring Framework**: 在Spring中,`@Scheduled`注解配合`Cron`属性可以方便地使用Cron表达式来设定定时任务。 - **CronSequenceGenerator**: Spring提供的类,可以解析和生成Cron表达式。 **5. 安全性和最佳...

    Spring集成Quartz定时任务框架介绍和Cron表达式详解

    本文将深入探讨如何在Spring项目中集成Quartz,并详细解析Cron表达式,以便更好地理解和运用定时任务。 首先,集成Quartz到Spring项目中通常涉及以下步骤: 1. **引入依赖**:在项目的pom.xml或build.gradle文件中...

    spring 定时器cron表达式生成

    在Spring框架中,定时任务是通过`@Scheduled`注解和`TaskScheduler`接口实现的,其中`cron`表达式是用于定义定时规则的核心部分。本文将深入探讨Spring的定时器以及如何生成和理解`cron`表达式。 一、Spring定时...

    使用spring @Scheduled注解执行定时任务

    ### 使用Spring `@Scheduled` 注解执行定时任务 在现代软件开发中,特别是企业级应用领域,定时任务处理是一项常见的需求。例如,自动备份数据库、定时发送报告邮件、定期清理缓存等。Spring 框架自3.0版本起引入了...

    十分钟教会你cron表达式

    十分钟教会你cron表达式,介绍怎么写cron表达式的语法

    详解Spring Boot中使用@Scheduled创建定时任务

    Spring Boot 中使用 @Scheduled 创建定时任务 Spring Boot 框架为我们提供了...@Scheduled 注解提供了多种方式来定义定时任务,包括 fixedRate、fixedDelay、initialDelay 等方式,以及使用 cron 表达式来定义规则。

    spring 定时任务@Scheduled详解

    在Spring框架中,定时任务是通过`@Scheduled`注解实现的,该注解提供了灵活的方式来安排任务在特定时间执行。下面将详细讲解如何配置和使用`@Scheduled`,以及其相关的cron表达式。 首先,要启用Spring的定时任务...

    Spring的定时器动态修改参数cron的值

    本篇文章将深入探讨如何动态地修改Spring定时器的cron表达式,以便任务能够根据业务需求进行实时调整。 首先,我们需要了解Spring中的定时任务是如何配置的。通常,我们会在Spring的配置文件中使用`@...

    spring-boot通过@Scheduled配置定时任务及定时任务@Scheduled注解的方法

    @Scheduled 注解可以设置 cron 表达式、fixedRate、initialDelay、fixedDelay 等参数以控制定时任务的执行。 在 Spring Boot 中,我们可以使用 @Configuration 注解和 SchedulingConfigurer 接口来配置定时任务的...

    layui 定时器表达式 文件资源附件

    5. Spring Boot的`@Scheduled`注解,结合Cron表达式实现定时任务。 6. 前后端交互,如Ajax请求和响应,用于传递Cron表达式。 7. 配置文件的处理,可能包括读取和解析Cron表达式的逻辑。 理解并掌握这些知识点,对于...

    Spring定时任务实现(非Web项目)

    综上所述,Spring提供的定时任务功能使得开发者能够轻松地在非Web项目中实现复杂的时间驱动逻辑,无论是简单的定时执行还是基于Cron表达式的复杂调度,Spring都能提供强大的支持。通过合理配置和编程,我们可以创建...

    Spring定时任务

    如果需要更复杂的调度策略,可以通过实现`SchedulingConfigurer`接口来自定义配置,或者通过`@Scheduled(cron = "...")`使用cron表达式设定定时规则。 5. **Cron表达式** Cron表达式是一种强大的时间表达方式,...

    定时任务与cron表达式md,学习代码

    【定时任务与cron表达式】是Java开发中的一个重要概念,特别是在服务器端的后台处理和自动化运维中广泛应用。cron表达式是一种强大的时间调度器,源于Unix系统,现在在各种编程语言和操作系统中都有实现,Java也不...

Global site tag (gtag.js) - Google Analytics