2016-08-04 21 views
0

Spring @async annotationで注釈が付けられたコードがあります。これは新しいスレッドでメソッドを実行するためのものです。理論的には、この方法は起動時に実行する必要があります。Spring @asyncアノテーションが起動できなかった理由は何ですか?

実際には実行されていません。私は、これは可能性があり、すべての可能な理由を考えるようにしようとしている

package ... 
... 
import org.springframework.scheduling.annotation.Async; 
... 
@Component 
public class MyClass { 
... 
    @Async 
    public void mymethod() { 
    ... 
    } 
} 

  • クラスではありません春のコンポーネントのスキャンパス内(ないこの場合は - チェック)

マイ質問は:Spring @asyncアノテーションが起動できなかった理由は何ですか?

(私は非同期で実行する場合にログインすることができますが、クラスが失敗しているされていますか?)

+1

なぜ、@ @ ASyncが起動時に実行されるべきですか?そこに何もないことは明らかです。起動時にinitメソッドを使用して何かを実行する必要がある場合も、間違ったアプローチです。どうして? AOPはまだ適用されていないかもしれないので、 '@ Async'や' @Transactional'のようなものは役に立ちません。 –

答えて

3

これら@Asyncは私

  1. @EnableAsyncのために働いていなかった状況が
  2. がありませんでしたされています
  3. @Asyncメソッドが公開されていません
  4. @Async注釈付きメソッドが同じクラスの別のメソッドから呼び出されました。おそらくの非同期プロキシコードをバイパスし、単純な方法を呼び出すだけです。
関連する問題