Spring4.0编程式定时任务配置
看过很多定时调度的配置,大多使用XML配置,觉得比较麻烦,也比较老套。这里介绍一种基于spring4.0注解编程式配置定时任务,简单清晰,使用方便..
至于引入spring相关jar这里不多说,直接切入正题贴上代码:
@Configuration
@EnableScheduling
public class WebAppConfig implements SchedulingConfigurer {
//TaskScheduler configuration
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
logger.info("Configure task registor: {}", taskRegistrar);
taskRegistrar.setScheduler(taskExecutor());
} @Bean(destroyMethod="shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(4);
}
}
思路:
我们通常将用于存放配置信息类的类名以 “Config” 结尾,如上我们在WebAppConfig里通过 @Configuration注解,指出该类是Bean配置的信息源,再通过@EnableScheduling开启定时调度,一般情况下实际项目中都是多线程执行定时任务的,所以我们可以通过实现SchedulingConfigurar接口,访问底层的ScheduledRegistrar实例,产生一个Executer对象,然后根据系统的承受能力调整线程池中工作线程的数目,这里我启了4个线程。注意上面使用的@bean(destroyMethod="shutdown")是为了确保当Spring应用上下文关闭的时候任务执行者也被正确地关闭。
使用:
@Component("user.task")
public class userTaskJob {
/**
* 每月第一天凌晨一点执行
*/
@Scheduled(cron="0 0 01 01 * ?")
public void tempUserTaskDelete() {
//do something
}
}
@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注,我们可以理解为将这个类交给spring管理,相当于一个java bean,名字叫user.task
到此为止我们就可以通过@Scheduled注解使用corn表达式实现任务调度了。
cron表达式简要介绍:
一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。依次顺序为:
- 秒(0~59)
- 分钟(0~59)
- 小时(0~23)
- 天(月)(0~31,需要考虑月的天数)
- 月(0~11)
- 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
- 年份(1970-2099)
常用符号代表意思:
- * 字符代表所有可能的值。因此,* 在子表达式(月)里表示每个月的含义,* 在子表达式(天(星期))表示星期的每一天
- ?字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
- / 字符表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次
几个示例:
- 每天的凌晨4点 @Scheduled(cron = "0 0 4 * * *")
- 每周日的凌晨5点 @Scheduled(cron = "0 0 5 * * SUN")
- 每月第一天凌晨2点10分 @Scheduled(cron="0 10 02 01 * ?")
- 每天从下午2点开始到2点55分结束每隔5分钟触发一次 @Schedule(cron = "0 0/5 14 * * ?")
Spring4.0编程式定时任务配置的更多相关文章
- SpringBoot 系列教程之编程式事务使用姿势介绍篇
SpringBoot 系列教程之编程式事务使用姿势介绍篇 前面介绍的几篇事务的博文,主要是利用@Transactional注解的声明式使用姿势,其好处在于使用简单,侵入性低,可辨识性高(一看就知道使用 ...
- Filter 起航 编程式配置 压缩响应 日志过滤器
[编程式配置]可以用web.xml配置替换 @WebListenerpublic class FilterListenerConfigurator implements ServletContextL ...
- 事务之三:编程式事务、声明式事务(XML配置事务、注解实现事务)
Spring2.0框架的事务处理有两大类: JdbcTemplate操作采用的是JDBC默认的AutoCommit模式,也就是说我们还无法保证数据操作的原子性(要么全部生效,要么全部无效),如: Jd ...
- Spring4.0支持Groovy配置
介绍 前一段时间观注了一下Spring4.0的一些特性,当中就有对Groovy配置的支持.因为临时还没有很深入的研究.所以举个小样例来说明一下怎样支持Groovy配置. package shuai.s ...
- spring3.0注解定时任务配置及说明
spring注解方式的定时任务配置: 第一步:spring配置文件 <?xml version="1.0" encoding="UTF-8"?> & ...
- 【Python】Linux crontab定时任务配置方法(详解)
CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使用它在 ...
- Spring Aop(十六)——编程式的自定义Advisor
转发:https://www.iteye.com/blog/elim-2399437 https://www.iteye.com/blogs/subjects/springaop 编程式的自定义Adv ...
- Spring Aop(十二)——编程式的创建Aop代理之AspectjProxyFactory
转发地址:https://www.iteye.com/blog/elim-2397922 编程式的创建Aop代理之AspectjProxyFactory 之前已经介绍了一款编程式的创建Aop代理的工厂 ...
- Spring Aop(十一)——编程式的创建Aop代理之ProxyFactory
转发地址:https://www.iteye.com/blog/elim-2397388 编程式的创建Aop代理之ProxyFactory Spring Aop是基于代理的,ProxyFactory是 ...
随机推荐
- ORB-SLAM(四)追踪
最近在读ORB-SLAM的代码,虽然代码注释算比较多了,但各种类和变量互相引用,看起来有点痛苦.索性总结了一下Tracking部分的代码结构,希望能抓住主要思路,不掉坑里. 追踪 追踪部分的主要思路是 ...
- SQL0946N错误及DB2事务日志
在对DB2数据库进行批量增删的时候, 如果数据量比较大会导致SQL0964N错误, DB2 Knowledge center(http://pic.dhe.ibm.com/infocenter/db2 ...
- BZOJ 1086: [SCOI2005]王室联邦
1086: [SCOI2005]王室联邦 Time Limit: 10 Sec Memory Limit: 162 MBSec Special JudgeSubmit: 1399 Solved: ...
- nginx中将POST数据写到日志里面的正确方式
http://www.cnblogs.com/meteorx/p/3188647.html
- 做参数可以读取参数 保存参数 用xml文件的方式
做参数可以读取参数 保存参数 用xml文件的方式 好处:供不同用户保存适合自己使用的参数
- BZOJ 4569 萌萌哒
题目传送门 4569: [Scoi2016]萌萌哒 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 483 Solved: 221 [Submit][S ...
- centos6 install mcrypt
Download the latest epel-release rpm from http://dl.fedoraproject.org/pub/epel/6/x86_64/ Install epe ...
- GDI画图,判断鼠标点击点在某一画好的多边形、矩形、图形里
Region.IsVisible方法 简单方便准确 private bool CheckPntInPoly(Point[] points, Point pnt) { || pnt == Point.E ...
- ArcGIS将Nodata区设置为0
两个栅格进行叠加,有时会有一部分没有数据,即用identify点击该区域,Value为NoData,而不是像其他非空区域一样有值.此时注意nodata区域要赋予0值,因为nodata+任何数=noda ...
- 外景VR的应用
留坑,续写. 最近在做外景的项目,被相关的帧率优化和灯光布置困扰的不要不要的.下面写下我是怎么优化帧率和对帧率的一些理解. 帧率,游戏的重要影响因素,会对玩家的手感以及视觉产生重大的影响,一般的游戏帧 ...