使用SpringBoot中的Schedule定時(shí)發(fā)送郵件的方法
思維導(dǎo)圖
介紹
- 基本概念:定時(shí)任務(wù)從字面不難看出,定時(shí)任務(wù)意思就是定時(shí)處理某種任務(wù)。
- 使用場(chǎng)景:比如說(shuō)定時(shí)發(fā)送郵件、消息提醒等等。
- 常見(jiàn)的定時(shí)任務(wù):Java.util.TImer、Quartz2、SpringBoot中的Schedule。
本文的主要內(nèi)容以springboot中的Schedule為例,來(lái)帶大家看看如何使用其做定時(shí)任務(wù)。
必不可少的注解
@EnableScheduling
:用于標(biāo)識(shí)啟動(dòng)類(lèi)開(kāi)啟定時(shí)任務(wù)。
@Component
:用于標(biāo)識(shí)定時(shí)任務(wù)類(lèi),讓Spring掃描其為組件。
@Scheduled
:用戶(hù)標(biāo)識(shí)在定時(shí)任務(wù)方法上,配置定時(shí)的規(guī)則。
入門(mén)案例
啟動(dòng)類(lèi)添加@EnableScheduling
啟動(dòng)類(lèi)添加@EnableScheduling負(fù)責(zé)開(kāi)啟定時(shí)任務(wù)功能。
@SpringBootApplication @MapperScan("com.shoanjen.redis.mapper") @EnableScheduling public class RedisApplication { public static void main(String[] args) { SpringApplication.run(RedisApplication.class, args); } }
定義定時(shí)任務(wù)類(lèi)
定義定時(shí)任務(wù)類(lèi),并標(biāo)注@Component注解。
定義定時(shí)任務(wù)方法并標(biāo)識(shí)@Schduled注解,每隔5秒在控制臺(tái)輸出日志。其中@Schedule參數(shù)如下
參數(shù) | 描述 |
---|---|
cron | 指定一個(gè)Cron表達(dá)式,用于精確控制任務(wù)的執(zhí)行時(shí)間 |
zone | 指定用于解析Cron表達(dá)式的時(shí)區(qū),默認(rèn)為服務(wù)器的默認(rèn)時(shí)區(qū) |
fixedDelay | 指定任務(wù)結(jié)束后的延遲時(shí)間(毫秒),用于控制下一次任務(wù)執(zhí)行的間隔 |
fixedDelayString | 與fixedDelay 類(lèi)似,但可以使用字符串表示延遲時(shí)間 |
fixedRate | 指定任務(wù)開(kāi)始執(zhí)行后的間隔時(shí)間(毫秒),用于控制連續(xù)任務(wù)之間的間隔 |
fixedRateString | 與fixedRate 類(lèi)似,但可以使用字符串表示間隔時(shí)間 |
initialDelay | 指定任務(wù)首次執(zhí)行前的延遲時(shí)間(毫秒) |
initialDelayString | 與initialDelay 類(lèi)似,但可以使用字符串表示延遲時(shí)間 |
有關(guān)于Cron表達(dá)式的配置可以參考此網(wǎng)址:Cron小工具
@Component public class ScheduleService { @Scheduled(fixedRate = 5000) //@Scheduled(fixedDelay = 5000) public void scheduleConsole(){ System.out.println("定時(shí)任務(wù)要開(kāi)始了喲?。。?!"); } }
效果
定時(shí)發(fā)送郵件
引入相關(guān)依賴(lài)
<!-- Spring Mail依賴(lài) --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
126郵箱配置
1.開(kāi)啟POP3/SMTP服務(wù)
2.點(diǎn)擊開(kāi)啟后,會(huì)發(fā)送短信獲取授權(quán)碼,注意要保存授權(quán)碼只顯示一次?。。?!
修改項(xiàng)目配置文件
spring.mail.host=smtp.126.com spring.mail.username=XXXXXX@126.com spring.mail.password=這里就是你剛剛的授權(quán)碼喲!
編寫(xiě)定時(shí)任務(wù)方法
在這里就舉一個(gè)簡(jiǎn)單的發(fā)送驗(yàn)證碼例子來(lái)進(jìn)行演示。下方類(lèi)中的定時(shí)任務(wù)方法用來(lái) 每天21:34定時(shí)向郵件發(fā)送驗(yàn)證碼的功能
。
@Component public class ScheduleService { @Autowired private JavaMailSender mailSender; @Scheduled(cron = "0 34 21 * * ?") public void scheduleMailTo(){ SimpleMailMessage message = new SimpleMailMessage(); //隨機(jī)驗(yàn)證碼 Random random=new Random(); int code=random.nextInt(9999)+1; // 發(fā)件人,配置文件中的郵件地址 message.setFrom("xxxxx@126.com"); // 收件人 message.setTo("xxxxx@163.com"); //設(shè)置郵件標(biāo)題 message.setSubject("注冊(cè)驗(yàn)證碼"); // 郵件內(nèi)容 message.setText("Hello歡迎使用xxx系統(tǒng),您的注冊(cè)驗(yàn)證碼為"+code); mailSender.send(message); System.out.println("郵件發(fā)送已完成哦?。?!"); } }
最終效果
最終效果請(qǐng)查看紅框!
寫(xiě)在最后
有關(guān)于SpringBoot中Schedule定時(shí)任務(wù)的方法到此就結(jié)束啦,希望對(duì)閱讀本文的你們有幫助哦。同時(shí)有疑問(wèn)可以在評(píng)論區(qū)留言,謝謝大家!
以上就是使用SpringBoot中的Schedule定時(shí)發(fā)送郵件的方法的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Schedule定時(shí)發(fā)送郵件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java如何將BigDecimal類(lèi)型的值轉(zhuǎn)成double類(lèi)型
這篇文章主要給大家介紹了關(guān)于Java如何將BigDecimal類(lèi)型的值轉(zhuǎn)成double類(lèi)型的相關(guān)資料,需要注意精度損失和范圍限制,使用doubleValue方法進(jìn)行轉(zhuǎn)換,并在高精度計(jì)算時(shí)格外小心,需要的朋友可以參考下2024-12-12如何使用IntelliJ IDEA的HTTP Client進(jìn)行接口驗(yàn)證
這篇文章主要介紹了如何使用IntelliJ IDEA的HTTP Client進(jìn)行接口驗(yàn)證,本文給大家分享最新完美解決方案,感興趣的朋友跟隨小編一起看看吧2024-06-06Spring-webflux訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)實(shí)戰(zhàn)
這篇文章主要為大家介紹了Spring-webflux訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07Springboot項(xiàng)目的搭建教程(分離出common父依賴(lài))
這篇文章主要介紹了Springboot項(xiàng)目的搭建教程(分離出common父依賴(lài)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01聊聊Springboot2.x的session和cookie有效期
這篇文章主要介紹了Springboot2.x的session和cookie有效期,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09