У меня есть класс Spring @Configuration следующим образом:
@Configuration
public class ExecutorServiceConfiguration {
@Bean
public BlockingQueue<Runnable> queue() {
return ArrayBlockingQueue<>(1000);
}
@Bean
public ExecutorService executor(BlockingQueue<Runnable> queue) {
return ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, queue);
}
@PreDestroy
public void shutdownExecutor() {
// no executor instance
}
}
Я также хотел бы указать метод @PreDestroy
, который завершает работу ExecutorService.Однако метод @PreDestroy
не может иметь никаких аргументов, поэтому я не могу передать bean-компонент executor
этому методу для его закрытия.Указание метода уничтожения в @Bean(destroyMethod = "...")
также не работает.Это позволяет мне указать существующий shutdown
или shutdownNow
, но не пользовательский метод, который я собираюсь использовать.
Я знаю, что мог бы создать экземпляр очереди и исполнителя напрямую, а не как бины Spring, но я 'Я бы предпочел сделать это таким образом.