在這里小小推薦下我的個(gè)人博客
csdn:雷園的csdn博客
個(gè)人博客:雷園的個(gè)人博客
簡(jiǎn)書:雷園的簡(jiǎn)書
Spring定時(shí)器應(yīng)該怎么用呢?
在Java中呢,我們總是會(huì)有一些定時(shí)任務(wù),比如說:發(fā)郵件、短信推送消息;發(fā)公告、更新等等。那么Spring中的定時(shí)器應(yīng)該如何使用呢?接下來我們就來說說Spring定時(shí)器的使用方法。
1.我們今天呢,是以springboot項(xiàng)目為基礎(chǔ)進(jìn)行的,大家如果不會(huì)使用Springboot的話可以先收藏一下,明天我會(huì)出一個(gè)Springboot項(xiàng)目的搭建文章。到時(shí)候你可以返回來再看這篇。因?yàn)閟pringboot實(shí)在是在方便了,用完之后就不想再回去寫配置文件了。。。
2.首先呢,我們需要在啟動(dòng)主程序中開啟定時(shí),只需要在主類上增加@EnableScheduling即可,相信大家看字面意思也明白是什么意思啦!
3.接下來就是寫我們的定時(shí)類,那么你就可以在定時(shí)類中完成自己的需求,無論是發(fā)送郵件、短信;還是公告、更新,他統(tǒng)統(tǒng)可以準(zhǔn)確無誤的幫你執(zhí)行,如果你有興趣,也可以寫一個(gè)搶購物品呀、車票呀什么的腳本。當(dāng)然說起來,寫腳本可能python更強(qiáng)一些。
package com.blogproject.utils;
import com.hanshow.leiyuan.blogproject.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class TimeUtils {
@Autowired
private TestService testService;
@Scheduled(cron = "0 0/1 * * * ?")
public void testTime() {
System.out.println(testService.testTimeUtils());
}
}
4.在以上代碼中呢,我使用 @Autowired注入了testService,為的是告訴大家,使用@Component的類同Controller、Service一樣,可以使用自動(dòng)注入。
5.定時(shí)方法上方@Scheduled(cron = "0 0/1 * * * ?")代表每分鐘執(zhí)行一次方法。testService中的方法僅僅是return了一個(gè)“you can you up?。?!”字符串。我就不把代碼貼出來。
6.大家可能很迷惑@Scheduled里面的時(shí)間到底是怎么算的,說實(shí)話~我也沒學(xué)會(huì)。但是你可以去搜索一下?。?!我在這里貼出幾個(gè)簡(jiǎn)單的例子,大家如果悟性好的,可以嘗試自己悟一下子?。。?/p>
* 代表所有的取值范圍的數(shù)字
/ 代表每的意思,*/5就是每5個(gè)單位
- 代表從某個(gè)數(shù)字到某個(gè)數(shù)字
, 分開幾個(gè)離散的數(shù)字
每?jī)蓚€(gè)小時(shí) 0 */2 * * *
晚上11點(diǎn)到早上8點(diǎn)之間每?jī)蓚€(gè)小時(shí),早上8點(diǎn) 0 23-7,8 * * *
每個(gè)月的4號(hào)和每個(gè)禮拜的禮拜一到禮拜三的早上11點(diǎn) 0 11 4 * 1-3
1月1日早上4點(diǎn) 0 4 1 1 *