If you want to use Java Config, you will need to create a SchedulingConfigurer configuration
@EnableScheduling @Configuration class SchedulingConfiguration implements SchedulingConfigurer { private final Logger logger = LoggerFactory.getLogger(getClass()); private final ThreadPoolTaskScheduler taskScheduler; SchedulingConfiguration() { taskScheduler = new ThreadPoolTaskScheduler(); taskScheduler.setErrorHandler(t -> logger.error("Exception in @Scheduled task. ", t)); taskScheduler.setThreadNamePrefix("@scheduled-"); taskScheduler.initialize(); } @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskScheduler); } }
You can change the error handler for your needs. Here I am only logging a message.
Remember to call taskScheduler.initialize (); . Without this, you will receive:
java.lang.IllegalStateException: ThreadPoolTaskScheduler not initialized
Mariusz.v7
source share