本帖最后由 大蓝鲸小蟀锅 于 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支持
五、局限性——@Scheduled的cron无法指定执行的年份但是制定到年份,会存在一个问题,就是在你在过了这个时间后再启动项目的时候,他会一直报一个memory leak的错误,大概的意思是你的定时任务将永远不会被执行,导致项目一直启动不了
—— @author lei.s
|