UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Spring Boot】@Asyncアノテーション

Javaのアプリケーションで非同期処理を実装して、パフォーマンスを向上したい

この時@Asyncアノテーションを知ったので調べた

@Asyncアノテーションは、JavaのSpring Bootフレームワークで非同期処理を実装する際に使用される

これを使用すると、メソッドが別のスレッドで並行して実行されるようになり、アプリケーションのパフォーマンスが向上する

以下の手順で@Asyncアノテーションを使用することができる

まず@Configurationが付いたクラスに@EnableAsyncを追加する

@Configuration
@EnableAsync
public class AsyncConfig {
    // 必要に応じて、非同期設定やカスタムExecutorのBean定義などを追加できます。
}

これでアプリケーション全体で非同期処理が有効になる

次に、非同期で実行したいメソッドに@Asyncアノテーションを追加する

public class MyAsyncService {

    @Async
    public CompletableFuture<String> asyncMethod() {
        // 非同期で実行される処理
        return CompletableFuture.completedFuture("結果");
    }
}

このメソッドは、新しいスレッドで実行され、元のスレッドはすぐに制御を返す

注意点は以下

  • 非同期で実行されるメソッドは、通常、戻り値としてFuture、CompletableFuture、ListenableFutureなどの非同期タイプを使用する
    これにより、呼び出し元が結果を取得できるようになる
  • @Asyncアノテーションは、同じクラス内でメソッドを呼び出すと、期待される非同期動作が実現されないことがある
    そのため、非同期メソッドは、別のクラスに配置することが推奨される

参考

https://www.baeldung.com/spring-async