看过很多定时调度的配置,大多使用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)

常用符号代表意思:

  1. * 字符代表所有可能的值。因此,* 在子表达式(月)里表示每个月的含义,* 在子表达式(天(星期))表示星期的每一天
  2. ?字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
  3. / 字符表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次

几个示例:

  1. 每天的凌晨4点 @Scheduled(cron = "0 0 4 * * *")
  2. 每周日的凌晨5点  @Scheduled(cron = "0 0 5 * * SUN")
  3. 每月第一天凌晨2点10分 @Scheduled(cron="0 10 02 01 * ?")
  4. 每天从下午2点开始到2点55分结束每隔5分钟触发一次 @Schedule(cron = "0 0/5 14 * * ?")

转载于:https://www.cnblogs.com/liliangel/p/5531519.html

Spring4.0编程式定时任务配置相关推荐

  1. java 安全策略,编程式安全策略配置

    编程式安全策略配置 本章定义的注解和API提供用于配置 Servlet 容器强制的安全约束. @ServletSecurity 注解 @ServletSecurity 提供了用于定义访问控制约束的另一 ...

  2. Spring 编程式定时任务

    (其实不单单事务有编程式和声明式,定时任务也有哦-) Spring 声明式定时任务大家都用的很频繁并且很熟练了吧,通过@EnableScheduling和@Schedule(cron)注解即可实现. ...

  3. 基于Servlet3.0的编程式SpringMVC实例详解

    传统的SpringMVC应用都是基于web.xml配置的,首先使用context listener启动Spring上下文,再配置一个DispatcherServlet启动一个WebApplicatio ...

  4. KubeVela 1.0 :开启可编程式应用平台的未来

    作者 | KubeVela 项目维护者 来源 | 阿里巴巴云原生公众号 作为 OAM(Open Application Model)在 Kubernetes 上的实现,KubeVela 项目从 oam ...

  5. 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 ...

  6. Spring→事务、隔离级别、事务传播行为、编程式事务控制、XML配置声明式事务(原始方式)、XML配置声明式事务(基于tx/aop)、@注解配置声明式事务、优势总结

    事务 Spring事务管理 不考虑隔离引发问题 隔离级别 事务传播行为 演示环境搭建 编程式事务控制 XML配置声明式事务(原始方式) XML配置声明式事务(基于tx/aop) @注解配置声明式事务 ...

  7. ppst技术视频——spring3.0 注解定时任务配置

    ppst 视频-- spring3.0 注解定时任务配置:请访问ppst 技术视频分享平台 , www.ppst.cc,上面有最新的技术视频 1.在spring的配置文件中加入配置 <conte ...

  8. vue2.0路由之编程式导航

    router.push(location) 想要导航到不同的 URL,则使用 router.push 方法.这个方法会向 history 栈添加一个新的记录,所以,当用户点击浏览器后退按钮时,则回到之 ...

  9. python定时任务crontab_【Python】Linux crontab定时任务配置方法(详解)

    CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. cron 系统调度 ...

最新文章

  1. python3.0视频教程_python中文视频教程(全38集),全套视频教程学习资料通过百度云网盘下载...
  2. LeNet训练MNIST
  3. html 调用main方法,ipcmain和ipcrenderer从index.html调用main.js函数
  4. python中的静态方法如何调用_关于Python中如何使用静态、类、抽象方法的权威指南(译)...
  5. 【原创】 关于全局静态变量初始化
  6. python面向对象编程之实例属性和类属性
  7. 常用的redis命令
  8. Redis学习总结(12)——Redis常见面试题再总结
  9. Qt程序启动画面QSplashScreen
  10. php yield 个人小解_PHP5.5新特性之yield理解与用法实例分析
  11. 关于调整input里面的输入光标大小
  12. 【C语言】在终端输入多行信息,找出包含“ould”的行,并打印改行。
  13. Mosek学习笔记2:优化
  14. 鼠标右键菜单及图标添加
  15. Ubuntu安装字体
  16. matplotlib显示宋体和Times New Roman
  17. autoJS for 快手极速版 可运行
  18. 【CF869E】The Untended Antiquity(哈希+二维树状数组)
  19. 工作经验分享-vivo链路监控
  20. 每个人的心里都有两头狼

热门文章

  1. Discuz支持反对提示:抱歉您的请求来路不正确或表单无法提交的解决方法
  2. 文件IO open 与 标准 IO fopen 的对应
  3. 分析Vector、ArrayList、Hashtable、HashMap数据结分享一下
  4. 第三方支付处理厂商软件有漏洞,日本美容零售商Acro 10万支付卡信息遭攻击
  5. 谷歌开源Allstar 项目,保护GitHub 仓库安全
  6. 外汇交易所巨头 Travelex 遭攻击暂停服务,详情不明
  7. [转]wxParse-微信小程序富文本解析组件
  8. PHP的HashTable实现
  9. (分治)分治法 及 题目
  10. 设计模式(Design pattern—