@Async注釈をSpringで使用しようとしています。私はそれを使用するために、以下の制約が見つかったブログの一部を通って行く:@Asyn注釈とSpringの使用
- これは、publicメソッドにのみ
- 自己呼び出しを適用する必要があります - 同じクラス内から非同期メソッドを呼び出す - 「受賞しました
@Asyncにマークしたい同じクラスから呼び出されているメソッドがあります。同じクラスからそれを達成する方法はありますか?
@Async注釈をSpringで使用しようとしています。私はそれを使用するために、以下の制約が見つかったブログの一部を通って行く:@Asyn注釈とSpringの使用
@Asyncにマークしたい同じクラスから呼び出されているメソッドがあります。同じクラスからそれを達成する方法はありますか?
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することです。私は個人的に上記の方法を実行する前にこのオプションを探索します。
私は別のクラスにメソッドを抽出し、それを自動配線しました。アプリケーションのコンテキストで自己注入を試みましたが、実行は同じスレッドで行われました。 –
コードを 'ApplciationContext'と共有することは可能ですか? – Rohit
どのように進めましたか? – Rohit
まだ解決策を探しています。私たちは春4.2に取り組んでいます。 –
私の答えを更新しました。 – Rohit