如何从spring定制"@Scheduled"注释的异常处理?
我有cron作业将在服务器(Tomcat 6)中触发,当发生任何异常时,我需要做一些处理.
Spring版本3.2 Tomcat Server 6
如果要使用Java Config,则需要创建实现SchedulingConfigurer的配置
@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); } }
您可以根据需要修改错误处理程序.这里我只记录一条消息.
别忘了调用taskScheduler.initialize(); .没有它你会得到:
java.lang.IllegalStateException: ThreadPoolTaskScheduler not initialized