SpringBoot開啟異步調用方法
異步調用無需等待,方法相當于子線程,后臺執(zhí)行,主線程執(zhí)行完成,子線程開始執(zhí)行。
SpringBoot 開啟異步執(zhí)行僅需兩步:
方法上加 @Async
@Override
@Async
@Transactional(rollbackFor = Exception.class)
public Integer init(DatePojo datePojo){
//xxxxxxxxxxx 業(yè)務略 xxxxxxx
log.info(" 起止日期為 : {} , {} ", start, end);
//xxxxxxxxxxxxx 業(yè)務略 xxxxxxx
log.info(" ------------------ 【能源入庫完成】------------------ {}", nyList);
log.info(" ------------------ 【新能源初始化結束】------------------");
return 0;
}
main 方法 開啟 @EnableAsync
@SpringBootApplication
@EnableAsync
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
controller
@PostMapping("/ny")
public ReturnMessage ny( @RequestBody DatePojo datePojo, BindingResult result) {
log.info(" 【 能源初始化接口調用開始 】");
//業(yè)務類
Integer data = xstjJdcNyService.init(datePojo);
log.info(" 【 能源初始化接口調用結束 】");
return new ReturnMessage(CodeMsgEnum.OK.getCode(), CodeMsgEnum.OK.getMsg(), data);
}
執(zhí)行結果

可以看到 controller 先執(zhí)行完成然后返回狀態(tài),接著 方法才開始執(zhí)行。
錯誤
Spring之AOP奇葩報錯:Null return value from advice does not match primitive return type for
原因是返回為null 基本類型要用包裝類型。
總結
1 使用了@Async的方法,會被當成是一個子線程,所有整個sendSms方法,會在主線程執(zhí)行完了之后執(zhí)行
2 同一個類中,一個方法調用另外一個有@Async的方法,注解是不會生效的!
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Springboot?引入?Redis?并配置序列化并封裝RedisTemplate?
這篇文章主要介紹了Springboot?引入?Redis?并配置序列化并封裝RedisTemplate。文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09
Spring Data Jpa實現(xiàn)分頁和排序代碼實例
本篇文章主要介紹了Spring Data Jpa實現(xiàn)分頁和排序代碼實例,具有一定的參考價值,有興趣的可以了解一下。2017-03-03
Java利用trueLicense實現(xiàn)項目離線證書授權操作步驟
文章介紹了如何使用trueLicense實現(xiàn)離線授權控制,包括生成公私鑰、創(chuàng)建證書校驗模塊、生成證書模塊和測試模塊,通過這種方式,可以控制用戶使用的項目模塊、授權周期、使用的設備和服務器,感興趣的朋友跟隨小編一起看看吧2024-11-11
java項目打包成可執(zhí)行jar用log4j將日志寫在jar所在目錄操作
這篇文章主要介紹了java項目打包成可執(zhí)行jar用log4j將日志寫在jar所在目錄操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08

