本篇文章給大家分享的是有關(guān)SpringBoot中怎么開啟異步調(diào)用,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)是一家專業(yè)提供畢節(jié)企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、做網(wǎng)站、H5場景定制、小程序制作等業(yè)務(wù)。10年已為畢節(jié)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
異步調(diào)用無需等待,方法相當(dāng)于子線程,后臺(tái)執(zhí)行,主線程執(zhí)行完成,子線程開始執(zhí)行。SpringBoot 開啟異步執(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(" ------------------ 【能源入庫完成】------------------ {}", nyList); log.info(" ------------------ 【新能源初始化結(jié)束】------------------"); return 0; }
main 方法 開啟 @EnableAsync
@SpringBootApplication@EnableAsyncpublic 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)用開始 】"); //業(yè)務(wù)類 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),接著 方法才開始執(zhí)行。
錯(cuò)誤
Spring之AOP奇葩報(bào)錯(cuò):Null return value from advice does not match primitive return type for原因是返回為null 基本類型要用包裝類型。
總結(jié)
1 使用了@Async的方法,會(huì)被當(dāng)成是一個(gè)子線程,所有整個(gè)sendSms方法,會(huì)在主線程執(zhí)行完了之后執(zhí)行
2 同一個(gè)類中,一個(gè)方法調(diào)用另外一個(gè)有@Async的方法,注解是不會(huì)生效的!
以上就是SpringBoot中怎么開啟異步調(diào)用,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。