Spring Task是Spring 3.0自帶的定時任務,能夠將它看做成一個輕量級的Quartz,功能雖然沒有Quartz那樣強大,可是使用起來很是簡單,無需增長額外的依賴,可直接上手使用。java
一 如何實現定時任務
1. 開啓定時任務
在啓動類上增長@EnableScheduling
註解,開啓定時任務git
2. 定時任務方法
使用@Scheduled
註解的方法就會被聲明成一個定時任務github
@Slf4j @Component public class ScheduledTest { @Scheduled(cron = "*/1 * * * * ?") public void test1(){ log.info("這個定時任務1----"); } @Scheduled(cron = "*/1 * * * * ?") public void test2(){ log.info("這個定時任務2----"); } @Scheduled(cron = "*/1 * * * * ?") public void test3(){ log.info("這個定時任務3----"); } }
3. 註冊bean
使用@Component
將這個定時任務類註冊成一個bean組件,交給Spring容器管理。redis
二 cron表達式詳解
在spring 4.x中已經不支持7個參數的cronin表達式了,要求必須是6個參數。cron表達式格式以下:spring
{秒} {分} {時} {日期(具體哪天)} {月} {星期}
- 秒:必填項,容許的值範圍是0-59,支持的特殊符號包括
,
-
*
/
,,
表示特定的某一秒纔會觸發任務,-
表示一段時間內會觸發任務,*
表示每一秒都會觸發,/
表示從哪個時刻開始,每隔多長時間觸發一次任務。 - 分:必填項,容許的值範圍是0-59,支持的特殊符號和秒同樣,含義類推
- 時:必填項,容許的值範圍是0-23,支持的特殊符號和秒同樣,含義類推
- 日期:必填項,容許的值範圍是1-31,支持的特殊符號相比秒多了
?
,表示與{星期}互斥,即意味着若明確指定{星期}觸發,則表示{日期}無心義,以避免引發衝突和混亂。 - 月:必填項,容許的值範圍是1-12(JAN-DEC),支持的特殊符號與秒同樣,含義類推
- 星期:必填項,容許值範圍是1~7 (SUN-SAT),1表明星期天(一星期的第一天),以此類推,7表明星期六,支持的符號相比秒多了
?
,表達的含義是與{日期}互斥,即意味着若明確指定{日期}觸發,則表示{星期}無心義。
若是對cron表達式不是很熟悉,能夠網上找一下,有許多生產cron表達式的網站。Spring Task就簡單介紹到這了,使用起來很是方便,下一章將介紹Quartz的使用及將任務持久化存儲。數據庫
本文示例代碼已上傳至github,點個star
支持一下!
Spring Boot系列教程目錄
spring-boot-route(一)Controller接收參數的幾種方式緩存
spring-boot-route(二)讀取配置文件的幾種方式微信
spring-boot-route(三)實現多文件上傳mybatis
spring-boot-route(四)全局異常處理spring-boot
spring-boot-route(五)整合Swagger生成接口文檔
spring-boot-route(六)整合JApiDocs生成接口文檔
spring-boot-route(七)整合jdbcTemplate操做數據庫
spring-boot-route(八)整合mybatis操做數據庫
spring-boot-route(九)整合JPA操做數據庫
spring-boot-route(十一)數據庫配置信息加密
spring-boot-route(十二)整合redis作爲緩存
spring-boot-route(十三)整合RabbitMQ
spring-boot-route(十五)整合RocketMQ
spring-boot-route(十六)使用logback生產日誌文件
spring-boot-route(十七)使用aop記錄操做日誌
spring-boot-route(十八)spring-boot-adtuator監控應用
spring-boot-route(十九)spring-boot-admin監控服務
spring-boot-route(二十)Spring Task實現簡單定時任務
spring-boot-route(二十一)quartz實現動態定時任務
spring-boot-route(二十二)實現郵件發送功能
這個系列的文章都是工做中頻繁用到的知識,學完這個系列,應付平常開發綽綽有餘。若是還想了解其餘內容,掃面下方二維碼告訴我,我會進一步完善這個系列的文章!