2、測試步驟
三、郵件任務
參考資訊
我們在**上傳送郵件,後台在傳送郵件時由於時間過長導致前端響應不動,直到郵件傳送完畢前端才可以響應。對於這種任務,可以採用非同步的方式進行處理。1、建立service包
2、在包中建立乙個asyncservice類,編寫相關方法並在方法上新增@async
註解,告訴springboot這是乙個非同步的方法,springboot就會自己開乙個執行緒池呼叫這個方法
@service
public
class
asyncservice
catch
(interruptedexception e)
}}
3、建立controller包
4、並建立asynccontroller類,編寫方法
@restcontroller
public
class
asynccontroller
}
5、在主程式上新增乙個註解@enableasync
,開啟非同步註解功能
@enableasync
// 開啟非同步註解功能
public
class
}
6、我們訪問http://localhost:8080/hello
進行測試,網頁瞬間響應並顯示「ok!」,在4秒後控制台輸出「資料處理完畢」,說明我們呼叫方法時確實是非同步呼叫的
在專案中需要經常執行一些定時任務,例如:每天凌晨時開始分析前一天的日誌資訊cron表示式是乙個字串,是又空格隔開的6或7個域組成的,每乙個域對應乙個含義,分別是(秒、分、時、每月第幾天、月、星期、年),其中最後乙個域「年」是可選字段
注意:在spring的schduled只支援前6個域,也就是不能設定「年」字段
允許值允許的特殊字元
秒0 - 59
, - * /
分0 - 59
, - * /
時0 - 23
, - * /
日1 - 31
, - * ? / l w c
月1 - 12
, - * /
星期0 - 7 或者 sun - sat
, - * ? / l w c
特殊字元
代表含義,列舉
-區間*任意
/步長?日/星期衝突匹配l最後
w工作日
c和calendar聯絡後計算過的值
#第幾個星期,4#2表示第2個星期三
(1)0/2 * * * * ? 表示每2秒 執行任務
(1)0 0/2 * * * ? 表示每2分鐘 執行任務
(1)0 0 2 1 * ? 表示在每月的1日的凌晨2點調整任務
(2)0 15 10 ? * mon-fri 表示周一到周五每天上午10:15執行作業
(3)0 15 10 ? 6l 2002-2006 表示2002-2023年的每個月的最後乙個星期五上午10:15執行作
(4)0 0 10,14,16 * * ? 每天上午10點,下午2點,4點
(5)0 0/30 9-17 * * ? 朝九晚五工作時間內每半小時
(6)0 0 12 ? * wed 表示每個星期三中午12點
(7)0 0 12 * * ? 每天中午12點觸發
(8)0 15 10 ? * * 每天上午10:15觸發
(9)0 15 10 * * ? 每天上午10:15觸發
(10)0 15 10 * * ? 每天上午10:15觸發
(11)0 15 10 * * ? 2005 2023年的每天上午10:15觸發
(12)0 * 14 * * ? 在每天下午2點到下午2:59期間的每1分鐘觸發
(13)0 0/5 14 * * ? 在每天下午2點到下午2:55期間的每5分鐘觸發
(14)0 0/5 14,18 * * ? 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發
(15)0 0-5 14 * * ? 在每天下午2點到下午2:05期間的每1分鐘觸發
(16)0 10,44 14 ? 3 wed 每年三月的星期三的下午2:10和2:44觸發
(17)0 15 10 ? * mon-fri 周一至周五的上午10:15觸發
(18)0 15 10 15 * ? 每月15日上午10:15觸發
(19)0 15 10 l * ? 每月最後一日的上午10:15觸發
(20)0 15 10 ? * 6l 每月的最後乙個星期五上午10:15觸發
(21)0 15 10 ? * 6l 2002-2005 2023年至2023年的每月的最後乙個星期五上午10:15觸發
(22)0 15 10 ? * 6#3 每月的第三個星期五上午10:15觸發
1、在service包中建立乙個scheduledservice,並新增乙個方法,同時在方法上使用@scheduled
註解並配置cron
表示式
@service
public
class
scheduledservice
}
2、在主程式上增加@enablescheduleing
註解開啟基於註解的定時任務功能
@enablescheduling
// 開啟基於註解的定時任務功能
public
class
}
3、啟動專案,並檢視看控制台資訊,定時任務執行成功!
1、引入pom依賴
>
>
org.springframework.bootgroupid
>
>
spring-boot-starter-mailartifactid
>
dependency
>
2、檢視一下相關的配置檔案,這些都是我們可以配置的資訊
@configurationproperties
(prefix =
"spring.mail"
)public
class
mailproperties
[email protected]
spring.mail.password=郵箱授權碼
spring.mail.host=smtp.qq.com
# qq需要配置ssl
spring.mail.properties.mail.smtp.ssl.enable=true
獲取授權碼:獲取授權碼:在qq郵箱中的設定->賬戶->開啟pop3和smtp服務4、在service包中建立mailsendservice類
@service
public
class
mailsendservice
/** * 複雜郵件
*/public
void
sendcomplexmail()
throws messagingexception
}
5、在單元測試中呼叫相關方法進行測試
@springboottest
class
}
6、檢視郵箱,是否成功接收郵件
八 SpringBoot之任務(非同步,定時,郵件)
在service中寫乙個方法 告訴spring這是乙個非同步方法 async public void hello catch interruptedexception e system.out.println 處理資料中.在controller層呼叫並跳轉頁面 autowired asyncserv...
SpringBoot使用非同步定時任務方法(一)
1.不用匯入其他依賴,只需要在啟動類上加入 enablescheduling註解,啟動對定時任務的支援 2.編寫非同步任務配置類,使用 enableasync啟用對非同步任務的支援,configuration表示該類為配置類 3.具體類 configuration enableasync publi...
SpringBoot非同步任務與定時任務
使用步驟 啟動類裡面使用 enableasync註解開啟非同步任務 enableasync 開啟非同步功能 public class 編寫非同步任務 在springboot中,非同步任務可以使用 async註解,可以在方法上標註該註解,說明該方法是非同步方法,也可以標註在類上,表示該類的所有方法都是...