1.首先加入下载spring3.2 ,http://projects.spring.io/spring-framework/
2.加入jar包,在applicationContext.xml加入声明
-xmlns加入
[java
xmlns:task="http://www.springframework.org/schema/task"
-xsi加入
[java]
http://www.springframework.org/schema/task
[java]
http://www.springframework.org/schema/task/spring-task-3.2.xsd"
[java]
<!-- 使用Annotation自动注册Bean,解决事物失效问题:在主容器中不扫描@Controller注解,在SpringMvc中只扫描@Controller注解。 -->
<context:component-scan base-package="com.zt49">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>
任务注解
[java]
<task:annotation-driven />
3.创建一个任务类(示例)
[java]
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class TestTask {
@Scheduled(cron = "0 0/1 * * * ?")
public void test(){
System.out.println("test");
}
}
启动程序,定时任务就可以了。这个示例代表每分钟执行一次任务。
附:cron常用表示:
CronTrigger配置格式:
格式: [秒] [分] [小时] [日] [月] [周] [年]
序号 说明 是否必填 允许填写的值 允许的通配符
1 秒 是 0-59 , - * /
2 分 是 0-59 , - * /
3 小时 是 0-23 , - * /
4 日 是 1-31 , - * ? / L W
5 月 是 1-12 or JAN-DEC , - * /
6 周 是 1-7 or SUN-SAT , - * ? / L #
7 年 否 empty 或 1970-2099 , - * /
通配符说明:
* 表示所有值. 例如:在分的字段上设置 "*",表示每一分钟都会触发。
? 表示不指定值。使用的场景为不需要关心当前设置这个字段的值。例如:要在每月的10号触发一个操作,但不关心是周几,所以需要周位置的那个字段设置为"?" 具体设置为 0 0 0 10 * ?
- 表示区间。例如在小时上设置 "10-12",表示 10,11,12点都会触发。
, 表示指定多个值,例如在周字段上设置 "MON,WED,FRI" 表示周一,周三和周五触发
/ 用于递增触发。如在秒上面设置"5/15" 表示从5秒开始,每增15秒触发(5,20,35,50)。 在月字段上设置'1/3'所示每月1号开始,每隔三天触发一次。
L 表示最后的意思。在日字段设置上,表示当月的最后一天(依据当前月份,如果是二月还会依据是否是润年[leap]), 在周字段上表示星期六,相当于"7"或"SAT"。如果在"L"前加上数字,则表示该数据的最后一个。例如在周字段上设置"6L"这样的格式,则表示“本 月最后一个星期五"
W 表示离指定日期的最近那个工作日(周一至周五). 例如在日字段上设置"15W",表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。如果指定格式为 "1W",它则表示每月1号往后最近的工作日触发。如果1号正是周六,则将在3号下周一触发。(注,"W"前只能设置具体的数字,不允许区间"-").
小提示
'L'和 'W'可以一组合使用。如果在日字段上设置"LW",则表示在本月的最后一个工作日触发(一般指发工资 )
# 序号(表示每月的第几个周几),例如在周字段上设置"6#3"表示在每月的第三个周六.注意如果指定"#5",正好第五周没有周六,则不会触发该配置(用 在母亲节和父亲节再合适不过了)
小提示
周字段的设置,若使用英文字母是不区分大小写的 MON 与mon相同.
常用示例:
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分每分触发
0 0/5 14 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发)
0 0/5 14,18 * * ? 每天下午的 2点到2点59分(整点开始,每隔5分触发) 每天下午的 18点到18点59分(整点开始,每隔5分触发)
0 0-5 14 * * ? 每天下午的 2点到2点05分每分触发
0 10,44 14 ? 3 WED 3月分每周三下午的 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 每月的第三周的星期五开始触发
0 0 12 1/5 * ? 每月的第一个中午开始每隔5天触发一次
0 11 11 11 11 ? 每年的11月11号 11点11分触发
相关推荐
### 使用Spring `@Scheduled` 注解执行定时任务 在现代软件开发中,特别是企业级应用领域,定时任务处理是一项常见的需求。例如,自动备份数据库、定时发送报告邮件、定期清理缓存等。Spring 框架自3.0版本起引入了...
同时,`@Scheduled`注解则允许定时任务的定义,方便进行计划任务的管理。 Spring 3.2还强化了与WebSocket协议的集成,提供了`WebSocketMessageBroker`,使得双向通信成为可能,这对于实时应用(如聊天室、股票交易...
例如,可以通过`@Scheduled`注解创建一个定时任务,或者在配置文件中定义一个`TaskScheduler`或`TaskExecutor`。 实现CRUD(创建、读取、更新、删除)操作是SSH集成的一个基本应用场景。在Struts2中,定义Action类...
Spring Boot 通过`@EnableScheduling`注解和`@Scheduled`注解为开发者提供了便捷的定时任务支持,使得创建和管理定时任务变得异常简单。 #### 三、核心概念与配置 ##### 3.1 启用定时任务支持 要在Spring Boot项目...
6. **任务调度与执行**:Spring的Task模块支持定时任务和后台任务的执行,如使用@Scheduled注解进行定时任务的定义。 7. **测试支持**:Spring提供了一套完整的测试框架,包括单元测试、集成测试和端到端测试,支持...
在本实战演练中,我们将深入探讨如何在Spring框架中集成...同时,这也是一个良好的起点,帮助你进一步研究Quartz的高级特性和Spring的其他定时任务解决方案,例如Spring Boot的`@Async`注解和Spring Cloud Data Flow。
1. **使用`@Scheduled`注解**:这是最常用的方式,可以直接在方法上添加`@Scheduled`注解,声明一个定时任务。注解中可以指定执行频率,例如cron表达式或固定延迟。 ```java @Component @EnableScheduling ...
在Spring框架中,任务调度是实现定时任务的关键功能,它提供了两种主要的配置方式:基于`<task>`标签和通过XML配置。这两种方法都旨在帮助开发者轻松地在应用中引入和管理后台任务,但它们之间存在一些差异和适用...
- **定义**: `@Scheduled`用于定时任务调度。 - **用途**: 支持cron表达式和固定时间间隔的定时任务。 **6.4 @Cacheable** - **定义**: `@Cacheable`用于缓存方法的结果。 - **用途**: 支持基于方法调用结果的缓存...
在实现中,可以使用Spring的Scheduled注解来配置定时任务,并使用数据库来存储定时任务的信息。同时,需要确保只有一个机器能够执行定时任务,以免多台机器同时执行同一个定时任务。 下面是解决方案的详细实现: ...
Spring框架提供了多种实现定时任务的方式,包括但不限于`@Scheduled`注解、`ScheduledExecutorService`以及`Timer`类。其中,基于`Timer`类的定时任务配置较为传统但依然具有一定的实用价值,尤其是在需要控制任务...
### Java开发者必须掌握的20个...以上是Spring框架中常用的20个注解,涵盖了Spring的核心功能,包括依赖注入、配置管理、AOP、异步任务和定时任务等。熟练掌握这些注解能够帮助开发者更加高效地进行Spring应用开发。
`Scheduled`注解是Spring中最简单的定时任务实现方式之一。只需要在目标方法上添加此注解,并配置相应的参数即可实现定时任务。例如: ```java @Component public class ScheduledTasks { @Scheduled(cron = "0 0...
- Spring 3.2及以上版本提供了`@Scheduled`注解,可以直接在方法上声明定时任务,简化了Quartz的使用。但这种方式不涉及Quartz的高级特性。 8. **监控和管理** - Quartz提供了Web管理界面JConsole,也可以通过API...
springboot学习资料 ...8.1、使用@Scheduled创建定时任务 9 8.2、使用@Async实现异步调用 9 8.3、自定义参数 9 8.4、多环境配置 9 8.5、修改端口号 9 8.6、SpringBoot yml 使用 9 8.7、发布打包 9
Spring Boot 支持通过 `@Scheduled` 注解来定义定时任务。可以通过配置定时任务的执行周期(如每天执行一次、每分钟执行一次等)来实现自动化任务处理。 以上是对 Spring Boot 相关知识点的详细解释,涵盖了 Spring...
1. **配置定时任务**: 在服务启动时配置定时任务,使用`@Scheduled`注解设置每隔2天执行一次订单状态检查。 2. **编写检查逻辑**: 定义一个方法用于检查所有未支付订单,并判断其创建时间是否超过2天。 3. **执行...
通常,我们可以通过在类上使用`@Scheduled`注解来定义定时任务。但是,如果需要动态管理任务,如添加、删除或修改任务,我们可以利用`@EnableScheduling`配合`org.springframework.scheduling.annotation....
### Java Web定时器使用详解 #### 一、Java定时器简介 Java定时器(`java.util.Timer`)是...此外,随着技术的发展,Spring框架提供了更为灵活和强大的定时任务解决方案,如`@Scheduled`注解等,也值得学习和探索。
`@Scheduled`注解用于定义定时任务,在SpringBoot项目中非常方便地实现定期执行某些任务的需求。例如,可以在指定的时间间隔内自动执行爬虫任务,更新美食数据。 ##### 1.3 Java线程池、缓冲队列和同步锁 **1.3.1 ...