Java 中的異步方法在Spring中的使用

Java使用異步方法時,需注意以下幾點:
1、調用異步方法時,一定要在其他類中調用,在同類中是不生效的。
2、測試時,儘量使用postman去測,用測試類有時候會執行無結果,也沒有不會異常;
3、異步方法是沒有返回值的,因爲方法中的函數 都是異步的,不知道誰先執行結束;

在Spring中調用異步方法:
在方法上使用註解 @Async ,且當前類是在Spring管理類中,其次,在啓動類中添加註解 @EnableAsync


@Async
public void shopScanDetailExportTask(RewardScanCodeDetailShop rewardScanCodeDetailShop) throws IOException {
    System.out.println("開始執行");


    // 1、添加下載中心數據
    OrderDownloadCenterModel downloadCenterModel = this.addOrderDownloadCenter3(rewardScanCodeDetailShop);


    // 2、上傳文件
    String fileUrl = this.exportOrderFile3(rewardScanCodeDetailShop);


    // 3、修改下載中心狀態
    downloadCenterModel.setFilePath(fileUrl);
    downloadCenterService.updOrderDownloadCenter(downloadCenterModel);


    System.out.println("結束執行");
}



/**
* 添加下載中心數據
* @param model
* @return
*/
public OrderDownloadCenterModel addOrderDownloadCenter3(RewardScanCodeDetailShop  model) {
    OrderDownloadCenterModel downloadCenterModel = model.getDownloadCenterModel();


    downloadCenterModel.setType(OrderTypeEnum.TERMINALSCANDETAILS.getValue().shortValue());


    downloadCenterService.addOrderDownloadCenter(downloadCenterModel);
    return downloadCenterModel;
}


/**
* 創建文件並上傳至阿里雲OSS
* @param model
* @return
* @throws IOException
*/
public String exportOrderFile3(RewardScanCodeDetailShop model) throws IOException {
    List<RewardScanCodeDetailShop> list = this.selectExcelShopList(SearchUtil.getSearch(model));
    if (!AirUtils.hv(list)) {
        RewardScanCodeDetailShop detailShop = new RewardScanCodeDetailShop();
        list.add(detailShop);
    }


    String fileName = (new StringBuffer()).append("ZDSMMX").append(TimeUtilis.getCurrentFormatTime("yyyyMMddHHmmss")).append(".csv").toString();
    FileItem fileItem = ExcelTools.exportByFile(list, 1);


    return downloadCenterService.getFileUrl(fileName, fileItem.getContent());
}

本文是銜接上一篇文件來的: Java上傳文件至阿里雲OSS

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章