非同步任務 SpringBoot

2021-10-14 08:09:01 字數 1167 閱讀 1217

1、建立乙個service包

2、建立乙個類asyncservice

非同步處理還是非常常用的,比如我們在**上傳送郵件,後台會去傳送郵件,此時前台會造成響應不動,直到郵件傳送完畢,響應才會成功,所以我們一般會採用多執行緒的方式去處理這些任務。

編寫方法,假裝正在處理資料,使用執行緒設定一些延時,模擬同步等待的情況;

@service

public

class

asyncservice

catch

(interruptedexception e)

system.out.

println

("業務進行中....");

}}

3、編寫controller包

4、編寫asynccontroller類

我們去寫乙個controller測試一下

@restcontroller

public

class

asynccontroller

}

5、訪問http://localhost:8080/hello進行測試,3秒後出現success,這是同步等待的情況。

問題:我們如果想讓使用者直接得到訊息,就在後台使用多執行緒的方式進行處理即可,但是每次都需要自己手動去編寫多執行緒的實現的話,太麻煩了,我們只需要用乙個簡單的辦法,在我們的方法上加乙個簡單的註解即可,如下:

6、給hello方法新增@async註解;

//告訴spring這是乙個非同步方法

@async

public

void

hello()

catch

(interruptedexception e)

system.out.

println

("業務進行中....");

}

springboot就會自己開乙個執行緒池,進行呼叫!但是要讓這個註解生效,我們還需要在主程式上新增乙個註解@enableasync ,開啟非同步註解功能;

@enableasync

//開啟非同步註解功能

public

class

}

7、重啟測試,網頁瞬間響應,後台**依舊執行!

Spring Boot 非同步任務

可以使用非同步的方式載入方法 只需在專案入口上定義 enableasync 開啟非同步註解功能 以及某個需要非同步方法上面定義 async註解 即可1.專案入口上定義 enableasync 開啟非同步註解功能 enableasync 開啟非同步註解功能 public class 2.使用 asyn...

springboot非同步任務

enablerabbit 開啟rabbit enableasync 開啟非同步 public class 新建乙個service,此service休眠3秒 package com.example.vuelog.service.task import org.springframework.sched...

springboot非同步任務

springboot非同步任務 使用 async 告訴spring這是乙個非同步方法 service public class asynservice catch interruptedexception e system.out.println 資料處理中 主函式使用 enableasync開啟非...