本文僅用於學習交流:
轉載自:http://www.mekau.com/3991.html
在同一個類中,一個方法調用另外一個有註解(比如@Async,@Transational)的方法,註解是不會生效的。
- 在調用@Async方法的類後面添加註解: @EnableAsync
- 在被調用的方法增加@Async註解
- 調用和被調用, 不能在一個類裏面定義, 要分開定義.
- 方法所屬的類的對象需要是被Spring容器所管理的,也就是指被@Controller @Service @Repository @Component這些註解的類
有時我們希望異步地調用一個方法,也就是調用這個方法的時候期望它立即返回。通常這樣做有以下3種情景:
- 我們不關心方法的返回值
- 方法的返回值爲void
- 通過Future對象異步地獲得返回值
我們可以新創建一個線程,在其run方法裏調用這個方法,然而,如果使用了Spring框架的話,可以使用其註解來屏蔽複雜的線程細節,而簡單地將方法變爲可異步調用的方法。
首先,方法所屬的類的對象需要是被Spring容器所管理的,也就是指被@Controller @Service @Repository @Component這些註解的類。
其次,需要在Spring的配置文件中打開task註解驅動:
然後,在被異步調用的方法上面加上@Async註解,表明這個方法可以被異步地調用。
最後,在調用方法所在的類上面加上@EnableAsync註解,在該類中調用@Async的方法使用異步的方式。