`

spring Scheduled 实现定时任务执行

 
阅读更多

首先要配置我们的spring.xml

 

 

 

xmlns 多加下面的内容、

 

 
xmlns:task="http://www.springframework.org/schema/task"

 

 

 

然后xsi:schemaLocation多加下面的内容、

 

 
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd


最后是我们的task任务扫描注解

任务调度器:

<!-- 任务调度器 -->
<task:scheduler id="scheduler"  pool-size="10" />

 

 
<!-- 任务执行器 -->
<task:executor id="executor" pool-size="10" />

<!--开启注解调度支持 @Async @Scheduled -->
<task:annotation-driven executor="executor" scheduler="scheduler" proxy-target-class="true" />


我的配置扫描位置是:

 
<!-- 自动扫描注解的bean -->
<context:component-scan base-package="com.mywind.eemp" />

 

 

扫描的是com.test这样的包下的内容、

下面需要接口和实现(我的这几个java文件都是com.test的包下的、)

 

 
  1. public interface IMyTestService {  
  2.        public void myTest();  
  3. }  


 

 

 
  1. @Component  //import org.springframework.stereotype.Component;  
  2. public class MyTestServiceImpl  implements IMyTestService {  
  3.       @Scheduled(cron="0/5 * *  * * ? ")   //每5秒执行一次  
  4.       @Override  
  5.       public void myTest(){  
  6.             System.out.println("进入测试");  
  7.       }  
  8. }  


执行后控制台就会打印出   进入测试   了

 

 

需要注意的几点:

 

1、spring的@Scheduled注解  需要写在实现上、

 

2、 定时器的任务方法不能有返回值(如果有返回值,spring初始化的时候会告诉你有个错误、需要设定一个proxytargetclass的某个值为true、具体就去百度google吧)

 

3、实现类上要有组件的注解@Component

 

一个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的事件系统和反射技术,我们可以实现定时任务的动态配置,使得应用在运行时能够根据需求调整任务执行的频率。这在许多场景下都是非常有用的,比如监控、数据同步和其他需要定期执行的操作。

    Spring定时任务@Scheduled例子

    在Spring框架中,定时任务是实现自动化操作的重要组成部分,它允许开发者在预设的时间间隔执行特定的任务。`@Scheduled`注解是Spring提供的一个强大工具,用于声明式地配置定时任务,无需编写复杂的线程管理和调度...

    Spring 定时任务源码(spring 三种定时任务的实现方式)

    2. **基于注解的@Scheduled定时任务** Spring 3.x引入了@Scheduled注解,使得定时任务的配置变得更加简洁。在需要执行定时任务的方法上添加@Scheduled注解,并指定cron表达式或fixedRate/fixedDelay参数,即可实现...

    Spring 框架自带定时任务和Quartz定时任务

    Spring框架提供了Spring Task来实现定时任务,它简单易用,能够覆盖大部分常规需求。对于复杂的调度需求,可以考虑使用Quartz框架。在选择具体的定时任务实现技术时,应该根据实际的应用场景、性能要求以及开发维护...

    spring @Scheduled定时任务代码

    spring @Scheduled定时任务代码

    Spring定时任务(Web项目)

    Spring框架提供了强大的定时任务支持,使得在Web项目中实现这类功能变得简单易行。本案例将详细介绍如何利用Spring技术来实现定时任务,并提供相关的代码示例。 一、Spring定时任务简介 Spring框架的定时任务功能...

    spring的自带定时任务

    这个特性使得开发者无需依赖其他外部任务调度库,如Quartz或Cron,就能在Spring应用中轻松实现定时任务的执行。下面我们将深入探讨Spring的自带定时任务,包括基于注解和XML配置两种方式。 ### 1. Spring定时任务...

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

    System.out.println("定时任务执行了"); } } ``` 这里的`fixedRate`属性指定了任务执行的间隔时间。 3. **启动应用**:确保你的应用正常启动后,Spring的定时任务就会按照设定自动开始执行。 此外,`@Scheduled`...

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

    System.out.println("使用cron表达式和时区定义的定时任务执行了,当前时间是:" + System.currentTimeMillis()); } } ``` 在这个示例中,我们创建了一个名为`MyScheduledTasks`的组件,并且在该组件中定义了两个...

    两种方式通过spring实现定时执行任务操作

    本文将详细讲解两种通过Spring实现定时任务的方法:Spring的`TimerTask`和`Spring Batch`的`Tasklet`。我们将涵盖这两种方法的基本原理、配置以及使用源码,确保你能全面理解如何在实际项目中应用。 ### 一、Spring...

    springMVC定时任务task方式实例代码

    本实例代码是基于Spring MVC实现的Task定时任务,旨在提供一个基础模板,便于开发者根据自身需求进行扩展。 1. **Spring MVC Task介绍** Spring MVC中的Task调度是通过`@Scheduled`注解和`TaskScheduler`接口来...

    Spring中实现定时任务

    Spring提供了多种方式来实现定时任务,包括使用`Quartz`和`Spring Task`(也称为Spring Scheduler)。这篇博客将重点讨论如何使用Spring Task来创建和管理定时任务。 首先,我们需要引入Spring Task的依赖。在Maven...

    IDEA使用springboot自带scheduled实现任务调度

    通过上述步骤,我们就可以在IDEA中利用Spring Boot的Scheduled功能实现定时任务调度了。在实际项目中,Scheduled可以用于执行数据同步、发送邮件、清理过期数据等各种定期任务,极大地提高了开发效率。在使用过程中...

    spring xml 定时任务

    在Spring框架中,XML配置是传统且广泛使用的方式来设置应用的组件和行为,包括实现定时任务。定时任务在软件开发中扮演着重要角色,它允许应用程序在预设的时间执行特定的任务,例如数据清理、日志归档或者发送通知...

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

    Cron 表达式是一种用于配置定时任务执行规则的标准格式,通常由六个或七个空格分隔的时间元素组成,分别代表秒、分、小时、日、月、周和年。其中,“?”、“,”、“-”、“/”等符号具有特定含义,用于表达不同的...

    springboot定时任务的动态开启关闭

    在Spring Boot应用中,定时任务是一项非常实用的功能,它允许我们按照预定的时间间隔执行特定的任务。Spring Boot提供了Spring Scheduler抽象来实现这样的需求,使得开发者能够方便地管理和控制定时任务。本篇文章将...

    spring动态配置定时任务

    本文将深入探讨如何在Spring中实现这种动态配置,以及如何结合数据库来管理和更新这些定时任务。 首先,Spring提供了`@Scheduled`注解来创建定时任务。在类或方法上使用这个注解,可以定义一个定时执行的任务。例如...

    Spring中定时任务

    4. 编写定时任务类,可以是普通的Java类,通过`@Component`或`@Service`注解将其纳入Spring管理,然后使用`@Scheduled`或实现`Job`接口。 5. 如果使用Quartz,还需要创建`Job`类,定义具体的业务逻辑,并创建对应的`...

    Spring3.0定时任务简单实例web工程

    总结来说,这个"Spring3.0定时任务简单实例web工程"提供了一个使用Spring 3.0实现定时任务的实例,通过配置`TaskScheduler`,定义任务类,使用`@Scheduled`注解设置执行计划,最后在Web应用启动时启动任务,可以方便...

Global site tag (gtag.js) - Google Analytics