Mit @Async annotierte Methoden müssen entweder Future oder void zurückgeben

Diese Regel kennzeichnet Java Methoden, die mit org.springframework.scheduling.annotation.Async die andere Typen zurückgeben als void, Future<t>, CompletableFuture<t> oder ListenableFuture<t>.

In Spring Framework 6 werden diese Anforderungen an den Rückgabetyp zur Laufzeit strikt durchgesetzt. Beliebig @Async methode, die einen nicht unterstützten Typ zurückgibt, löst nun eine Exception aus.

Das folgende Beispiel zeigt die gültige Verwendung von Methoden, die @Async mit einem kompatiblen Rückgabetyp verwenden.


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;
    }
}

Weitere Informationen finden Sie in den folgenden Quellen: