Les méthodes annotées avec @Async doivent retourner soit Future soit void

Cette règle signale Java les méthodes annotées avec la mention org.springframework.scheduling.annotation.Async qui renvoient des types autres que void, Future<t>, CompletableFuture<t> ou ListenableFuture<t>.

Dans Spring Framework 6, ces exigences en matière de type de retour sont strictement appliquées au moment de l'exécution. Tous @Async renvoyant un type non pris en charge lèvera désormais une exception.

L'exemple suivant montre une utilisation valide des méthodes qui utilisent @Async avec un type de retour conforme.


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

Pour plus d'informations, voir les ressources suivantes :