接口方法上的Spring @Async注释

时间:2012-02-02 08:23:45

标签: multithreading spring

可以在接口方法上使用Spring @Async注释(因此该接口的所有实现都将在该方法上隐式具有@Async),还是只能在具体类上使用?

2 个答案:

答案 0 :(得分:12)

我快速测试了它,并且在接口上使用@Async将使实现异步。

如果您想自己尝试一下:您可以通过检查Thread.currentThread().getId()的值是否不同(在调用方法之前和方法内部)或仅在Thread.sleep(10000);中添加void来轻松测试预期方法是异步的。

另请注意,返回类型必须为java.util.concurrent.Future或{{1}}。

答案 1 :(得分:4)

由于@Asyncdefined

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

TYPE is

  

类,接口(包括注释类型)或枚举声明

METHOD is

  

方法声明

是的,您也可以在界面方法上使用它。