I metodi annotati con @Async devono restituire Future o void

Questa regola segnala i metodi di Java annotati con org.springframework.scheduling.annotation.Async che restituiscono tipi diversi da void, Future<t>, CompletableFuture<t> oppure ListenableFuture<t>.

In Spring Framework 6, questi requisiti sui tipi di ritorno sono rigorosamente applicati in fase di esecuzione. Qualsiasi @Async che restituisce un tipo non supportato, ora lancia un'Eccezione.

L'esempio seguente mostra un uso valido dei metodi che utilizzano @Async con un tipo di ritorno 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;
    }
}

Per ulteriori informazioni, consultare le seguenti risorse: