1. 开篇

从spring3.1开始,计划任务在spring中的实现变得异常的简单。首先通过配置类注解@EnableScheduling来开启对计划任务的支持,然后在要执行计划任务的方法上注解@Scheduled,声明这是一个计划任务。

spring通过@Scheduled支持多种类型的计划任务,包含cron、fixDelay、fixRate等。

2. 代码示例

a. 计划任务服务类

定时任务服务类

解释:

i. 通过@Scheduled声明该方法是计划任务,使用fixedRate属性每隔固定事件执行;

ii. 使用cron属性可按照指定时间执行,本例指的是每天15点57分执行;cron是UNIX和类UNIX(linux)系统下的定时任务;

b. 配置类

配置类

解释:

i. 通过@EnableScheduling注解开启对计划任务的支持

c. 运行测试类

运行测试类

d. 运行结果

运行结果

e. 报错信息

无需理会的debug级别异常信息

看到这个异常信息很懵逼,很明显这是定时任务的异常,可是定时任务命名能够正常运行啊,怎么回事呢?

尝试删掉所有的定时任务配置,果然异常消失了。但是只要启用任何一个定时任务,异常都会再次出现。一个程序员怎么能容忍异常的出现而不去管它?

大家有没有注意到这两个异常的级别都是debug而不是error。于是经过我千辛万苦地bd。终于得知,原来,spring地定时任务调度器会尝试获取一个注册过地task scheduler来做任务调度,它会尝试通过BeanFactory.getBean地方法来获取一个注册过地scheduler bean,获取地步骤为:

1. 尝试从配置中找到一个TaskScheduler Bean;

2. 寻找ScheduledExecutorService Bean;

3. 使用默认的scheduler

前两步如果找不到地话,就会以debug的方式抛出异常,分别是:

logger.debug(“Could not find default TaskScheduler bean,”ex);

logger.debug(“Could not find default ScheduledExecutorService bean”,ex);

所以,日志中打印出来的两个异常,根本不是什么错误信息,也不会影响定时器的使用,只不过是spring自己打印的一些信息罢了。但是不明白为什么已异常的方式打印出来,也许有什么重要的信息需要提示开发者,具体什么原因,只能有机会进一步去了解了。或者各位看到这篇文章的同学有什么见解,可以在评论区发表一下。

想获取完整面试题及答案的同学请点赞、关注并转发。私信主:“Java面试题”获取完整资料,更有超全spring、jvm、linux、docker等电子书相送。更有整理的200多页的面试重点知识点,非常全面,需要的私信。

每天一个Java知识点(spring-计划任务)相关推荐

  1. Spring:一个Java框架15年的演化

    作者:刘欣 来自:码农翻身(ID:coderising) 这篇文章来自于Spring创始人之一Juergen Hoeller在2018年的一次演讲(点击阅读原文查看),我觉得很有意思,又加了点儿料呈现 ...

  2. java 浅堆 深堆_JVM中的一个小知识点:深堆和浅堆的概念

    java中的堆内存算是整个内存区域中最重要的一块,几乎所有的对象都分配在堆内存.在堆内存中有两个主要的概念需要我们理解,这对分析java堆内存的故障有着重要的作用,分别是深堆和浅堆. 一.概念 我们先 ...

  3. 【Java知识点大全】

    文章目录 前言 Java基础知识点 计算机基础问题 深拷贝和浅拷贝 伪共享的概念以及如何避免 网络四元组 TCP协议为什么要设计三次握手? HashMap HashMap底层实现 1.7版本和1.8版 ...

  4. 【转载】JAVA知识点集锦(中)

    这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别?  答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运 ...

  5. 一个java高级工程师的进阶之路【转】

    一个java高级工程师的进阶之路[转] 宏观方面 一. JAVA.要想成为JAVA(高级)工程师肯定要学习JAVA.一般的程序员或许只需知道一些JAVA的语法结构就可以应付了.但要成为JAVA(高级) ...

  6. 给Java新手的一些建议——Java知识点归纳(Java基础部分)

    写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,主要是和一些java基础知识点相关的,所以也希望能分享给刚刚入门的Java程序员和打算入Java开发这个行当的准新手们,希望可以给 ...

  7. spring计划任务

    Spring3中加强了注解的使用,其中计划任务也得到了增强,现在创建一个计划任务只需要两步就完成了: 创建一个Java类,添加一个无参无返回值的方法,在方法上用@Scheduled注解修饰一下: 在S ...

  8. Java知识点总结(Java容器-EnumSet)

    Java知识点总结(Java容器-EnumSet) @(Java知识点总结)[Java, Java容器, JavaCollection, JavaSet] EnumSet EnumSet是一个专为枚举 ...

  9. 自己写一个java.lang.reflect.Proxy代理的实现

    前言 Java设计模式9:代理模式一文中,讲到了动态代理,动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的.本文就自己写一个Pr ...

最新文章

  1. 设计模式之简单工厂模式(Simply Factory)摘录
  2. 在Kubernetes v1.8中使用RBAC
  3. R语言对dataframe(data.table)数据分层随机抽样实战
  4. 【Java 并发编程】线程锁机制 ( 悲观锁 | 乐观锁 | CAS 三大问题 | ABA 问题 | 循环时间长问题 | 多个共享变量原子性问题 )
  5. Android异步加载
  6. GAN for NLP (论文笔记及解读
  7. C++四种强制类型转换
  8. 让HTML标签title属性值换行
  9. mysql 语句 简书_MySQL基本语句
  10. windows10下搭建spark平台
  11. 6.2神经网络算法应用上学习笔记
  12. MySQL导入sql文件的三种方法
  13. python分词、词频统计以及根据词频绘制词云
  14. 平头哥RVB2601开发板开发环境CDK
  15. HDU 1698 Just a Hook(线段树区间更新)
  16. Git提交合并提交及注释
  17. C#-获取当前程序集Assembly的文件名
  18. mysql的prepared_statement
  19. cad中直径符号不显示_怎么在CAD、Word里敲出直径符号,你会吗?
  20. 没有网络,也能上网-基于USSD技术的信息服务

热门文章

  1. 网页服务器版本,华为网页版本进云服务器
  2. 《中国制造2025》提出构建绿色制造体系,成为我国制造业新趋势
  3. 全国著名大学在线精品课程网站大全
  4. windows7图形界面远程centos6.5
  5. 软考系统集成项目管理工程师模拟题(含答案、解析)
  6. 我给文案新人的1点建议!
  7. 计算机在我们生活中有哪些应用,计算机在生活中的应用有哪些?
  8. twisted的cred
  9. 一维数组与对象深拷贝的几种方法(指数组、对象中均无嵌套)
  10. 贝荣粒分享:谈谈兼职的坑