2012-02-02 319 views
7

Spring的接口方法(因此該接口的所有實現將隱含地具有該方法的@Async)還是隻能在具體類上使用?接口方法上的Spring @Async註釋

+0

你試過了嗎? – 2012-02-02 08:33:47

+0

我嘗試註解一個接口方法(和它編譯),但寧願找出它是否會實際工作,然後開始實現具體類 – Alex 2012-02-02 08:56:51

+1

如果您使用cglib代理而不是jdk代理,並在接口上使用@Async註釋,它可能無法正常工作。 – shrini1000 2012-04-19 10:38:22

回答

9

我很快測試了它,並且在接口上有@Async會使實現異步。

如果您想自己嘗試:您可以通過檢查Thread.currentThread().getId()的值在預期爲異步的方法中不同(調用方法之前和方法內)或僅添加Thread.sleep(10000);來輕鬆地進行測試。

另請注意,退貨類型必須是voidjava.util.concurrent.Future

3

由於@Asyncdefined作爲

@Target(value={TYPE,METHOD}) 
@Retention(value=RUNTIME) 
@Documented 
public @interface Async 

TYPEis

類,接口(包括註釋類型),或枚舉聲明

METHODis

方法聲明

是的,你可以使用它在接口中的方法,太。

+11

但它是否真的會使實現異步呢? :) – 2012-02-02 08:32:08

+0

是的。它將使它的所有實現異步 – maya16 2017-07-17 07:54:12

相關問題