Asyncでアノテーションされたメソッドは、Futureかvoidを返す必要があります。

このルールは、 Java でアノテーションされたメソッドにフラグを立てます org.springframework.scheduling.annotation.Async 以外の型を返す void, Future<t>, CompletableFuture<t> または ListenableFuture<t>.

Spring Framework 6では、これらの戻り値の型要件は実行時に厳密に強制される。 任意の @Async メソッドがサポートされていない型を返した場合、例外がスローされるようになりました。

以下の例は、@Asyncを使用するメソッドの、準拠した戻り値の型による有効な使用法を示している。


import org.springframework.scheduling.annotation.Async;
import java.util.concurrent.Future;
import java.util.concurrent.CompletableFuture;
import org.springframework.util.concurrent.ListenableFuture;

public class ValidAsyncMethods {
	
    @Async
    public void asyncVoid() {
    }
    @Async
    public Future<String> asyncFuture() {
        return null;
    }
    @Async
    public CompletableFuture<Integer> asyncCompletableFuture() {
        return null;
    }
    @Async
    public ListenableFuture<String> asyncListenableFuture() {
        return null;
    }
}

詳しくは、以下のリソースを参照してください。