Это основной класс приложения:
@EnableAsync(proxyTargetClass = true)
@EnableDiscoveryClient
@SpringBootApplication
public class ProductApplication {
public static void main(final String[] args) {
SpringApplication.run(ProductApplication.class, args);
}
@Bean("threadPoolTaskExecutor")
public TaskExecutor getAsyncExecutor() {
final ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(20);
executor.setMaxPoolSize(1000);
executor.setWaitForTasksToCompleteOnShutdown(true);
executor.setThreadNamePrefix("Async-");
return executor;
}
}
Это класс обслуживания:
@Component
public class ProductServiceImpl implements ProductService {
@Autowired
ProductRepository productRepository;
@Autowired
private ProductHandler productHandler;
@Async
@Override
public List<String> getAllCategories() {
final List<String> finalList = new ArrayList<>();
return finalList;
}
}
Это класс контроллера:
@RestController
public class ProductResource {
@Autowired
private ProductServiceImpl productServiceImpl;
@GetMapping("/categories")
public ResponseEntity<List<String>> getAllCategories() {
return new ResponseEntity<>(this.productServiceImpl.getAllCategories(), HttpStatus.OK);
}
}
Я аннотировал метод реализации сервиса с @Async
, но я получаю эту ошибку:
Действие:
Рассмотрите возможность внедрения компонента в качестве одного из его интерфейсов или принудительного использования прокси на основе CGLib с помощью установка proxyTargetClass = true для @ EnableAsyn c и / или @ EnableCaching.
Если я пытаюсь комментировать контроллер, я получаю пустой ответ на мой запрос get. Я пробовал все, включая установку proxyTargetClass
в true.