1,问题描述
Caused by: java.lang.IllegalStateException: Encountered invalid @Scheduled method 'userRegPersist': Cron expression must consist of 6 fields (found 7 in "0 12 17 14 3 ? 2018") at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.processScheduled(ScheduledAnnotationBeanPostProcessor.java:402) at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor$1.doWith(ScheduledAnnotationBeanPostProcessor.java:245) at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:524) at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:504) at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.postProcessAfterInitialization(ScheduledAnnotationBeanPostProcessor.java:240) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:422) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ... 56 more
- Spring定时任务-cron只能包含6个字段,即使不支持支持年份
2,源码分析
- @Scheduled
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Repeatable(Schedules.class) public @interface Scheduled { /** * A cron-like expression, extending the usual UN*X definition to include * triggers on the second as well as minute, hour, day of month, month * and day of week. e.g. {@code "0 * * * * MON-FRI"} means once per minute on * weekdays (at the top of the minute - the 0th second). * @return an expression that can be parsed to a cron schedule * @see org.springframework.scheduling.support.CronSequenceGenerator */ String cron() default ""; }
- CronSequenceGenerator
/** * Date sequence generator for a * <a href="http://www.manpagez.com/man/5/crontab/">Crontab pattern</a>, * allowing clients to specify a pattern that the sequence matches. * * <p>The pattern is a list of six single space-separated fields: representing * second, minute, hour, day, month, weekday. Month and weekday names can be * given as the first three letters of the English names. * * <p>Example patterns: * <ul> * <li>"0 0 * * * *" = the top of every hour of every day.</li> * <li>"*/10 * * * * *" = every ten seconds.</li> * <li>"0 0 8-10 * * *" = 8, 9 and 10 o'clock of every day.</li> * <li>"0 0/30 8-10 * * *" = 8:00, 8:30, 9:00, 9:30 and 10 o'clock every day.</li> * <li>"0 0 9-17 * * MON-FRI" = on the hour nine-to-five weekdays</li> * <li>"0 0 0 25 12 ?" = every Christmas Day at midnight</li> * </ul> * * @author Dave Syer * @author Juergen Hoeller * @since 3.0 * @see CronTrigger */ public class CronSequenceGenerator {}
- 通过源码和源码中的例子,我们可以看到自从Spring3.0的版本后,cron表达式只能支持6个字段
3,问题解决
- Spring集成Quartz
- cron表达式的具体用法参考:http://blog.csdn.net/fly910905/article/details/79530709