我想使用@Async註釋由春提供。通過一些博客去,我發現有使用它的以下限制:@Asyn註解與春天
- 必須應用於公共方法只
- 自我調用 - 調用同一類中的異步方法 - 贏得」 t工作
我有一個方法,從我想標記@Async相同的類中調用。有什麼方法可以從同一個班級實現它?
我想使用@Async註釋由春提供。通過一些博客去,我發現有使用它的以下限制:@Asyn註解與春天
我有一個方法,從我想標記@Async相同的類中調用。有什麼方法可以從同一個班級實現它?
在Spring v4.3 +中,您可以使用自注入,並在自注入引用上調用該方法。
因此,例如:
@Component
public class SomeClass {
@Autowired
private SomeClass selfInjected;
public void someMethod() {
selfInjected.someOtherMethod();
}
@Async
public void someOtherMethod(){
...;
}
}
更新爲OP是4.3之前使用的版本:
這會爲你工作。
@Component
public class SomeClass {
@Autowired
private ApplicationContext applicationContext;
private SomeClass selfInjected;
@PostConstruct
private void init() {
selfInjected = applicationContext.getBean(SomeClass.class);
}
}
或者
另一種選擇是,以提取分離類和自動裝配它的方法。在執行上述方法之前,我會親自探討這個選項。
我將該方法提取到單獨的類並自動連線它。嘗試與應用程序上下文的自我注入,但仍執行完成相同的線程。 –
是否可以通過ApplciationContext共享代碼 – Rohit
你是怎麼進行的? – Rohit
仍在尋找解決方案。我們正在研究春季4.2 –
更新了我的答案。 – Rohit