您的位置:首頁 > 軟件教程 > 教程 > 為什么@Async注解失效?9種情景解析

為什么@Async注解失效?9種情景解析

來源:好特整理 | 時間:2024-05-07 09:49:03 | 閱讀:96 |  標(biāo)簽: 種 S C   | 分享到:

前言 最近星球中有位小伙伴問了我一個問題:他在項目某個方法使用@Async注解,但是還是該方法還是同步執(zhí)行了,異步不起作用,到底是什么原因呢? 偽代碼如下: @Slf4j @Service public class UserService { @Async public void async(Str

最近有小伙伴向我提出了一個問題:他在項目某個方法使用了 @Async 注解,但是該方法仍然同步執(zhí)行,異步?jīng)]有生效。這讓我思考了一下,今天我將總結(jié)@Async注解失效的9種情景,希望對你有所幫助。

為什么@Async注解失效?9種情景解析

1. 未使用@EnableAsync注解

在Spring中啟用@Async注解異步功能,需要在項目的啟動類或配置類上使用 @EnableAsync 注解。例如:

@EnableAsync
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

@EnableAsync 注解相當(dāng)于一個開關(guān),控制是否開啟 @Async 注解異步功能,默認是關(guān)閉的。如果未使用@EnableAsync注解,則@Async注解異步功能無法生效。

2. 內(nèi)部方法調(diào)用

在日常開發(fā)中,我們經(jīng)常需要在一個方法中調(diào)用另一個方法。如果在Service類中的一個方法中調(diào)用另一個方法,則@Async注解的異步功能會失效。

3. 方法非public

在Java中有4種權(quán)限修飾符,例如public、private、protected和默認修飾符。如果在Service類中的方法權(quán)限修飾符定義錯誤,例如定義成private,也會導(dǎo)致@Async注解的異步功能失效。

4. 方法返回值錯誤

如果@Async注解的異步方法的返回值不是void或Future類型,也會導(dǎo)致異步功能失效。

5. 方法用static修飾了

使用@Async注解聲明的方法必須是能被重寫的,而static修飾的方法是不允許被重寫的,因此static修飾的方法會導(dǎo)致@Async注解的異步功能失效。

6. 方法用final修飾

使用final關(guān)鍵字修飾的方法也會導(dǎo)致@Async注解的異步功能失效。

7. 業(yè)務(wù)類沒加@Service注解

如果Service類沒有使用@Service、@Component或者@Controller等注解聲明,該類不會被Spring管理,因此也就無法使用Spring的異步功能。

8. 自己new的對象

在項目中自己new的對象不會被Spring管理,因此也就無法使用Spring的異步功能。

9. Spring無法掃描異步類

如果@ComponentScan注解定義的路徑?jīng)]有包含你新加的Service類的路徑,@Async注解異步的功能也會失效。

最后說一句(求關(guān)注,別白嫖我)

如果這篇文章對您有所幫助,或者有所啟發(fā)的話,幫忙掃描下發(fā)二維碼關(guān)注一下,您的支持是我堅持寫作最大的動力。求一鍵三連:點贊、轉(zhuǎn)發(fā)、在看。關(guān)注蘇三的公眾號:【蘇三說技術(shù)】,在公眾號中回復(fù):面試、代碼神器、開發(fā)手冊、時間管理有超贊的粉絲福利,另外回復(fù):加群,可以跟很多BAT大廠的前輩交流和學(xué)習(xí)。

小編推薦閱讀

好特網(wǎng)發(fā)布此文僅為傳遞信息,不代表好特網(wǎng)認同期限觀點或證實其描述。

相關(guān)視頻攻略

更多

掃二維碼進入好特網(wǎng)手機版本!

掃二維碼進入好特網(wǎng)微信公眾號!

本站所有軟件,都由網(wǎng)友上傳,如有侵犯你的版權(quán),請發(fā)郵件[email protected]

湘ICP備2022002427號-10 湘公網(wǎng)安備:43070202000427號© 2013~2025 haote.com 好特網(wǎng)