Методы, аннотированные @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;
    }
}

Дополнительная информация: