Я использую Spring Boot 2.2.4 и пытаюсь создать пользовательский Executor
Ниже приведены соответствующие классы
@Configuration
@ManagedResource
public class ExecutorConfig {
@Bean(name = "detailsScraperExecutor")
public Executor getDetailsAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(5);
executor.setQueueCapacity(1000000);
executor.setThreadNamePrefix("detailsScraperExecutor-");
executor.initialize();
return executor;
}
}
и следующий класс, который пытается его использовать .
@Component
@Profile("!test")
public class DetailsScraper {
private static final Logger logger = LoggerFactory.getLogger(DetailsScraper.class);
@Autowired
@Qualifier("detailsScraperExecutor")
private ThreadPoolTaskExecutor detailsScraperExecutor;
}
Когда я запускаю приложение, я получаю следующую ошибку
org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка создания бина с именем detailsScraper: неудовлетворенная зависимость выражается через поле detailsScraperExecutor; вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: нет доступного квалифицирующего компонента типа 'org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor': ожидается, что по крайней мере 1 компонент будет квалифицирован как кандидат для автоматической передачи. Аннотации зависимостей: {@ org.springframework.beans.factory.annotation.Autowired (обязательно = true), @ org.springframework.beans.factory.annotation.Qualifier (value = "detailsScraperExecutor")}
my application.properties
spring.jmx.enabled=false
spring.datasource.url=jdbc:postgresql://example.com:5432/example
spring.datasource.username=example
spring.datasource.password=password
spring.jpa.open-in-view=false
logging.level.com.gargoylesoftware.htmlunit=ERROR
spring.datasource.hikari.maximumPoolSize = 30
app.properties.parseaddress.endpoint=http://example.com
Даже если я назвал его detailsScraperExecutor
Spring не может его найти? Почему это?