Spring middle
@Async — что важно знать?
Ответ
Работает через прокси (как @Transactional) — не работает при self-invocation. Нужен @EnableAsync. Default executor может быть неподходящим — часто настраивают свой TaskExecutor.
Разбор: @Async реализован через AOP-прокси, поэтому требует @EnableAsync и не срабатывает при self-invocation (вызов минует прокси), а задачи отправляются в TaskExecutor, который по умолчанию (SimpleAsyncTaskExecutor) создаёт поток на каждую задачу без переиспользования — поэтому обычно настраивают свой пул. Метод может возвращать void, Future или CompletableFuture.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.