У меня есть приложение Spring, которое использует
@SpringBootApplication
и
@EnableScheduling
в основной Java.Также у него есть класс с несколькими методами @Scheduled:
@Component
public class ScheduledTasks {
(...)
@Scheduled(cron = "0 0/5 10-18 ? * *")
public void doThings() {
(...)
}
@Scheduled(cron = "0 0/22 23 ? * *")
public void doAnotherThings() {
(...)
}
Насколько я знаю, он не объявляет какой-либо специальный пул потоков, ThreadPoolExecutor или тому подобное.Приложение работает нормально, а запланированные задания работают нормально.
Я хотел бы получить значения аннотации @Scheduled в runTime, просто чтобы узнать, когда был определен cron, и показать информацию пользователю.
НЕ обязательно изменять или добавлять новые задачи / задания в планировщик.
Я пробовал некоторые идеи в этом ответе Как работает Springобъекты, представленные во время выполнения? пытается получить autowired ThreadPoolExecutor или ThreadPoolTaskExecutor, а затем пытается определить, содержит ли поле этого объекта полезную информацию, но при их получении с помощью Autowired всегда происходит сбой при запуске приложения.
Мое приложениетакже говорит при запуске «Не найден bean-компонент TaskScheduler / ScheduledExecutorService для запланированной обработки», поэтому я предполагаю, что он использует стандартный / простой способ запуска запланированных методов, они работают нормально.
Я не знаю, нужно ли этовручную создать @Bean с этим объектом в классе @Configuration, чтобы проанализировать его, или как заполнить конструктор, связанный с ними.
Какой объект имеет информацию, связанную с заданиями расписания?
Могу ли я автоматически связать его в своем классе, чтобы получить информацию?
Необходимо ли создавать его вручную с помощью @Bean в Spring?Как?
Большое спасибо.