2017-06-06 130 views
0

我想使用@Async註釋由春提供。通過一些博客去,我發現有使用它的以下限制:@Asyn註解與春天

  1. 必須應用於公共方法只
  2. 自我調用 - 調用同一類中的異步方法 - 贏得」 t工作

我有一個方法,從我想標記@Async相同的類中調用。有什麼方法可以從同一個班級實現它?

+0

你是怎麼進行的? – Rohit

+0

仍在尋找解決方案。我們正在研究春季4.2 –

+0

更新了我的答案。 – Rohit

回答

1

在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); 
    } 
} 

或者

另一種選擇是,以提取分離類和自動裝配它的方法。在執行上述方法之前,我會親自探討這個選項。

+0

我將該方法提取到單獨的類並自動連線它。嘗試與應用程序上下文的自我注入,但仍執行完成相同的線程。 –

+0

是否可以通過ApplciationContext共享代碼 – Rohit