A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 大蓝鲸小蟀锅 于 2017-12-21 19:24 编辑

【南京校区】Spring定时任务之@Scheduled

我们之前都学过使用quartz框架执行定时调度问题,但是这个配置比较麻烦,所以可以使用spring的@scheduled的注解方式进行调度;

一、配置文件
xmlns 添加下面的内容
xmlns:task="http://www.springframework.org/schema/task"

然后xsi:schemaLocation添加下面的内容
http://www.springframework.org/schema/task  
http://www.springframework.org/schema/task/spring-task-4.1.xsd  

最后是我们的task任务扫描注解
<task:annotation-driven/>

二、调用

三、需要注意的几点:
1、spring的@Scheduled注解  需要写在实现上、
2、 定时器的任务方法不能有返回值(如果有返回值,spring初始化的时候会告诉你有个错误、需要设定一个proxytargetclass的某个值为true)
3、实现类上要有组件的注解@Component

四、cron相关参数意义
按顺序依次为
· 秒(0~59)
· 分钟(0~59)
· 小时(0~23)
· 天(月)(0~31,但是你需要考虑你月的天数)
· 月(0~11)
· 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
· 年份(1970-2099)——@Scheduled是不支持的,spring quartz支持

五、局限性——@Scheduledcron无法指定执行的年份
但是制定到年份,会存在一个问题,就是在你在过了这个时间后再启动项目的时候,他会一直报一个memory leak的错误,大概的意思是你的定时任务将永远不会被执行,导致项目一直启动不了

—— @author  lei.s


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马