javascript
在Spring项目中使用@Scheduled注解定义简单定时任务
如題所示,有時候我們需要在Web項目中配置簡單的定時任務,而且因為任務并不復雜不想使用定時調度框架(PS:Quartz、ActiveMQ 、Kafka等),這時就可以考慮使用@Scheduled注解來定義簡單的定時任務。其全部配置如下:
(1)在Spring的配置文件中添加定時任務相關配置:
xml配置的頭文件中添加:
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.0.xsd最后添加:
<context:component-scan?base-package="cn.zifangsky.task"?/><task:executor?id="executor"?pool-size="5"/><task:scheduler?id="scheduler"?pool-size="10"/><task:annotation-driven?executor="executor"?scheduler="scheduler"/>其中,這里首先定義了Spring自動掃描定時任務所在的package,也就是“cn.zifangsky.task”。接著定義了兩個線程池以及啟用定時任務的掃描機制
(2)添加測試任務:
package?cn.zifangsky.task;import?java.text.Format; import?java.text.SimpleDateFormat; import?java.util.Date;import?org.springframework.scheduling.annotation.Scheduled; import?org.springframework.stereotype.Component;@Component public?class?SimpleSpringTask?{/***?每次任務執行完之后的2s后繼續執行*/@Scheduled(fixedDelay=2000)public?void?say(){Date?current?=?new?Date();Format?format?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");System.out.println("--------"?+?format.format(current)?+?"---------");}/***?0秒的時候打印*/@Scheduled(cron="0?*?*?*?*??")public?void?print(){System.out.println("當前是整分!!!");}}上面第一個任務定義了每個任務執行完之后的2s之后再次執行,如果需要強制指定每隔多少時間執行一次任務,可以將上面的fixedDelay改成fixedRate,如:
/***?每隔兩秒執行一次本方法*/@Scheduled(fixedRate=2000)public?void?say(){Date?current?=?new?Date();Format?format?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");System.out.println("--------"?+?format.format(current)?+?"---------");}當然,上面的第二種任務形式類似于Linux下的crontab定時任務,幾個參數位分別表示:秒、分鐘、小時、天(每月中的天)、月份以及星期
注:如果想要了解更多的關于Linux中使用crontab命令的用法可以參考我的這篇文章:https://www.zifangsky.cn/591.html
(3)測試:
運行這個項目后,最后控制臺中的輸出如下:
PS:上面圖片中的水印是我個人博客的域名,因此還請管理員手下留情不要給我標為“轉載文章”,謝謝!!!
轉載于:https://blog.51cto.com/983836259/1877598
總結
以上是生活随笔為你收集整理的在Spring项目中使用@Scheduled注解定义简单定时任务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习-损失函数 (转)
- 下一篇: 1.eclipse怎么样新建web项目,