2012-02-02 71 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

相关问题