У меня есть класс BaseRestController
, который расширяют остальные контроллеры.У него есть метод, который я хочу запустить асинхронно.
public abstract class BaseRestController {
...
@Async("someThreadPoolTaskExecutor")
public void someAsyncTask() {
...
}
}
@RestController
public class MyRestController extends BaseRestController {
...
@GetMapping("/some/path")
public SomeEntity getSomething() {
...
this.someAsyncTask();
}
}
Я включил Async
с помощью аннотации, реализовал метод, который получает someThreadPoolTaskExecutor
TaskExecutor и все.Если я добавлю @Async("someThreadPoolTaskExecutor")
в метод Service (класс, помеченный @Service
), он будет работать, но если я сделаю это с someAsyncTask () в BaseRestController , код не будет работатьасинхронно.Украшение класса с помощью @ Component также не сработало.
Руководство по Spring для Async также не помогло.В демонстрационной версии он также демонстрирует Async с классом обслуживания.
Хотя в процессе я понял, что поведение, которое я хотел реализовать, лучше делегировать классу обслуживания, яЛюбопытно, чтобы понять, почему выше не будет работать.
Я использую 2.1.0.RELEASE Spring Boot.