Spring4.0编程式定时任务配置
看过很多定时调度的配置,大多使用XML配置,觉得比较麻烦,也比较老套。这里介绍一种基于spring4.0注解编程式配置定时任务,简单清晰,使用方便..
至于引入spring相关jar这里不多说,直接切入正题贴上代码:
@Configuration @EnableScheduling public class WebAppConfig implements SchedulingConfigurer {//TaskScheduler configuration @Overridepublic 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 * * ?")
转载于:https://www.cnblogs.com/liliangel/p/5531519.html
Spring4.0编程式定时任务配置相关推荐
- java 安全策略,编程式安全策略配置
编程式安全策略配置 本章定义的注解和API提供用于配置 Servlet 容器强制的安全约束. @ServletSecurity 注解 @ServletSecurity 提供了用于定义访问控制约束的另一 ...
- Spring 编程式定时任务
(其实不单单事务有编程式和声明式,定时任务也有哦-) Spring 声明式定时任务大家都用的很频繁并且很熟练了吧,通过@EnableScheduling和@Schedule(cron)注解即可实现. ...
- 基于Servlet3.0的编程式SpringMVC实例详解
传统的SpringMVC应用都是基于web.xml配置的,首先使用context listener启动Spring上下文,再配置一个DispatcherServlet启动一个WebApplicatio ...
- KubeVela 1.0 :开启可编程式应用平台的未来
作者 | KubeVela 项目维护者 来源 | 阿里巴巴云原生公众号 作为 OAM(Open Application Model)在 Kubernetes 上的实现,KubeVela 项目从 oam ...
- Vue.js-Day05【安装路由(vue-router)、如何使用vue-router、404配置、激活class、动态路由、编程式导航、路由嵌套、路由元信息、导航拦截】
Vue.js实训[基础理论(5天)+项目实战(5天)]博客汇总表[详细笔记] 目 录 1.单页面应用 1.1.多页面应用 1.2.单页面应用 1.3.vue-router 2.安装vue-rout ...
- Spring→事务、隔离级别、事务传播行为、编程式事务控制、XML配置声明式事务(原始方式)、XML配置声明式事务(基于tx/aop)、@注解配置声明式事务、优势总结
事务 Spring事务管理 不考虑隔离引发问题 隔离级别 事务传播行为 演示环境搭建 编程式事务控制 XML配置声明式事务(原始方式) XML配置声明式事务(基于tx/aop) @注解配置声明式事务 ...
- ppst技术视频——spring3.0 注解定时任务配置
ppst 视频-- spring3.0 注解定时任务配置:请访问ppst 技术视频分享平台 , www.ppst.cc,上面有最新的技术视频 1.在spring的配置文件中加入配置 <conte ...
- vue2.0路由之编程式导航
router.push(location) 想要导航到不同的 URL,则使用 router.push 方法.这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之 ...
- python定时任务crontab_【Python】Linux crontab定时任务配置方法(详解)
CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. cron 系统调度 ...
最新文章
- python3.0视频教程_python中文视频教程(全38集),全套视频教程学习资料通过百度云网盘下载...
- LeNet训练MNIST
- html 调用main方法,ipcmain和ipcrenderer从index.html调用main.js函数
- python中的静态方法如何调用_关于Python中如何使用静态、类、抽象方法的权威指南(译)...
- 【原创】 关于全局静态变量初始化
- python面向对象编程之实例属性和类属性
- 常用的redis命令
- Redis学习总结(12)——Redis常见面试题再总结
- Qt程序启动画面QSplashScreen
- php yield 个人小解_PHP5.5新特性之yield理解与用法实例分析
- 关于调整input里面的输入光标大小
- 【C语言】在终端输入多行信息,找出包含“ould”的行,并打印改行。
- Mosek学习笔记2:优化
- 鼠标右键菜单及图标添加
- Ubuntu安装字体
- matplotlib显示宋体和Times New Roman
- autoJS for 快手极速版 可运行
- 【CF869E】The Untended Antiquity(哈希+二维树状数组)
- 工作经验分享-vivo链路监控
- 每个人的心里都有两头狼