2017-06-06 7 views
0

@Async注釈をSpringで使用しようとしています。私はそれを使用するために、以下の制約が見つかったブログの一部を通って行く:@Asyn注釈とSpringの使用

  1. これは、publicメソッドにのみ
  2. 自己呼び出しを適用する必要があります - 同じクラス内から非同期メソッドを呼び出す - 「受賞しました

@Asyncにマークしたい同じクラスから呼び出されているメソッドがあります。同じクラスからそれを達成する方法はありますか?

+0

どのように進めましたか? – Rohit

+0

まだ解決策を探しています。私たちは春4.2に取り組んでいます。 –

+0

私の答えを更新しました。 – Rohit

答えて

1

Spring v4.3 +では、自己注入を使用して自己注入参照のメソッドを呼び出すことができます。例えばので

これはあなたのために動作します:OPは4.3前のバージョンを使用しているように更新

@Component 
public class SomeClass { 
    @Autowired 
    private SomeClass selfInjected; 

    public void someMethod() { 
     selfInjected.someOtherMethod(); 
    } 

    @Async 
    public void someOtherMethod(){ 
     ...; 
    } 
} 

@Component 
public class SomeClass { 

    @Autowired 
    private ApplicationContext applicationContext; 

    private SomeClass selfInjected; 

    @PostConstruct 
    private void init() { 
     selfInjected = applicationContext.getBean(SomeClass.class); 
    } 
} 

それとも

他のオプションは、別のクラスにメソッドを抽出し、それをautowireすることです。私は個人的に上記の方法を実行する前にこのオプションを探索します。

+0

私は別のクラスにメソッドを抽出し、それを自動配線しました。アプリケーションのコンテキストで自己注入を試みましたが、実行は同じスレッドで行われました。 –

+0

コードを 'ApplciationContext'と共有することは可能ですか? – Rohit

関連する問題