Разница между void и Future методами при асинхронном выполнении в Spring заключается в том, что для разных случаев требуется определённый подход. 24
Для методов, возвращающих void, достаточно просто применить аннотацию @Async, вызывающий код вернётся сразу после вызова, а фактическое выполнение метода произойдёт в отдельной задаче. 24 При этом исключения не будут перехватываться и не смогут попасть в вызывающий поток. 23
Для методов, возвращающих какое-то значение, необходимо, чтобы они имели возвращаемое значение типа Future. 2 Это позволит вызывать код выполнять другие задачи до вызова get() для этого Future. 2 При этом исключения, сгенерированные во время выполнения метода, будут генерироваться при вызове get для результирующего Future. 2
Таким образом, выбор между void и Future методами зависит от конкретных требований и задач разработки.