SpringBoot開(kāi)啟異步調(diào)用方法
異步調(diào)用無(wú)需等待,方法相當(dāng)于子線程,后臺(tái)執(zhí)行,主線程執(zhí)行完成,子線程開(kāi)始執(zhí)行。
SpringBoot 開(kāi)啟異步執(zhí)行僅需兩步:
方法上加 @Async
@Override @Async @Transactional(rollbackFor = Exception.class) public Integer init(DatePojo datePojo){ //xxxxxxxxxxx 業(yè)務(wù)略 xxxxxxx log.info(" 起止日期為 : {} , {} ", start, end); //xxxxxxxxxxxxx 業(yè)務(wù)略 xxxxxxx log.info(" ------------------ 【能源入庫(kù)完成】------------------ {}", nyList); log.info(" ------------------ 【新能源初始化結(jié)束】------------------"); return 0; }
main 方法 開(kāi)啟 @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(" 【 能源初始化接口調(diào)用開(kāi)始 】"); //業(yè)務(wù)類(lèi) Integer data = xstjJdcNyService.init(datePojo); log.info(" 【 能源初始化接口調(diào)用結(jié)束 】"); return new ReturnMessage(CodeMsgEnum.OK.getCode(), CodeMsgEnum.OK.getMsg(), data); }
執(zhí)行結(jié)果
可以看到 controller 先執(zhí)行完成然后返回狀態(tài),接著 方法才開(kāi)始執(zhí)行。
錯(cuò)誤
Spring之AOP奇葩報(bào)錯(cuò):Null return value from advice does not match primitive return type for
原因是返回為null 基本類(lèi)型要用包裝類(lèi)型。
總結(jié)
1 使用了@Async的方法,會(huì)被當(dāng)成是一個(gè)子線程,所有整個(gè)sendSms方法,會(huì)在主線程執(zhí)行完了之后執(zhí)行
2 同一個(gè)類(lèi)中,一個(gè)方法調(diào)用另外一個(gè)有@Async的方法,注解是不會(huì)生效的!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- SpringBoot中實(shí)現(xiàn)異步調(diào)用@Async詳解
- SpringBoot中異步調(diào)用時(shí)的注意事項(xiàng)
- 淺談SpringBoot實(shí)現(xiàn)異步調(diào)用的幾種方式
- SpringBoot中的定時(shí)任務(wù)和異步調(diào)用詳解
- 三種SpringBoot中實(shí)現(xiàn)異步調(diào)用的方法總結(jié)
- SpringBoot異步調(diào)用方法并接收返回值
- SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)和異步調(diào)用
- SpringBoot異步調(diào)用相同類(lèi)的解決方案
相關(guān)文章
SpringBoot封裝自己的Starter的實(shí)現(xiàn)方法
這篇文章主要介紹了SpringBoot封裝自己的Starter的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04Java線程操作的常見(jiàn)方法【線程名稱獲取、設(shè)置、線程啟動(dòng)判斷等】
這篇文章主要介紹了Java線程操作的常見(jiàn)方法,結(jié)合實(shí)例形式總結(jié)分析了java線程的創(chuàng)建、線程名稱的獲取、設(shè)置以及線程啟動(dòng)的判斷等相關(guān)操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-10-10JavaWeb實(shí)現(xiàn)簡(jiǎn)單上傳文件功能
這篇文章主要為大家詳細(xì)介紹了JavaWeb實(shí)現(xiàn)簡(jiǎn)單上傳文件功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06spring動(dòng)態(tài)注冊(cè)bean?AOP失效原理解析
這篇文章主要為大家介紹了spring動(dòng)態(tài)注冊(cè)bean使AOP失效原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07關(guān)于SpringBoot配置文件application.properties的路徑問(wèn)題
這篇文章主要介紹了關(guān)于SpringBoot配置文件application.properties的路徑問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08一篇文章教你使用SpringBoot如何實(shí)現(xiàn)定時(shí)任務(wù)
這篇文章主要給大家介紹了關(guān)于如何利用一篇文章教你使用SpringBoot實(shí)現(xiàn)定時(shí)任務(wù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10淺析Java中StringBuffer和StringBuilder的使用
當(dāng)對(duì)字符串進(jìn)行修改的時(shí)候,需要使用 StringBuffer 和 StringBuilder 類(lèi)。本文就來(lái)和大家簡(jiǎn)單聊聊這二者的使用與區(qū)別吧,希望對(duì)大家有所幫助2023-04-04