Encountered invalid @Scheduled method 'processNotifications': Cron expression must consist of 6 fields (found 1 in "#{@getConfigRetryValue}")

huangapple 未分类评论46阅读模式
英文:

Encountered invalid @Scheduled method 'processNotifications': Cron expression must consist of 6 fields (found 1 in "#{@getConfigRetryValue}")

问题

我正在将 Ant 构建转换为 Gradle 构建。突然之间,之前从 XML 配置的 @schedule 不再起作用。我正在尝试初始化一个方法以从 XML 中获取值。我尝试了以下 XML 配置:

<interface name="appnotification">		
		<property name="retry_interval" value="0 0/5 * * * ?" /> <!-- 每 5 分钟一次 -->
</interface>

Java 文件如下:

@Component
@EnableScheduling
public class Task {
private static final String INTERFACE_NAME = "appnotification";
@Bean
	public String getConfigRetryValue() {
        Map interfaceProps = Config.getInterfaceProperties(INTERFACE_NAME);		
		return (String) interfaceProps.getOrDefault("retry_interval", DELAY_TIME_IN_MINS);
	}
@Scheduled(cron = "#{@getConfigRetryValue}")
public void processNoti() {}
}

错误如下:

Caused by: org.springframework.beans.factory.BeanCreationException: 在 URL [jar:file:abc.jar!/abc/report/Task.class] 中定义的名为 'Task' 的 bean 创建错误:bean 初始化失败;嵌套异常是 java.lang.IllegalStateException: 遇到无效的 @Scheduled 方法 'processNotifications':Cron 表达式必须包含 6 个字段(在 "#{@getConfigRetryValue}" 中找到 1 个字段)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:921)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:864)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:779)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:503)
	... 41 more
Caused by: java.lang.IllegalStateException: 遇到无效的 @Scheduled 方法 'processNotifications':Cron 表达式必须包含 6 个字段(在 "#{@getConfigRetryValue}" 中找到 1 个字段)
	at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.processScheduled(ScheduledAnnotationBeanPostProcessor.java:300)
	at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.access$000(ScheduledAnnotationBeanPostProcessor.java:76)
	at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor$1.doWith(ScheduledAnnotationBeanPostProcessor.java:164)
	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:495)
	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:473)
	at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.postProcessAfterInitialization(ScheduledAnnotationBeanPostProcessor.java:160)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:409)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1520)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
	... 50 more
英文:

I am converting ant build to gradle build. All of a sudden @schedule is not working which used to configure from xml. i am trying to initialize a method to get the values from xml. i tried

xml configuration as follows

<interface name="appnotification">		
		<property name="retry_interval" value="0 0/5 * * * ?" /> <!-- every 5 minutes -->
</interface>

java file is as follows

@Component
@EnableScheduling
public class Task {
private static final String INTERFACE_NAME = "appnotification";
@Bean
	public String getConfigRetryValue() {
        Map interfaceProps = Config.getInterfaceProperties(INTERFACE_NAME);		
		return (String) interfaceProps.getOrDefault("retry_interval", DELAY_TIME_IN_MINS);
	}
@Scheduled(cron = "#{@getConfigRetryValue}")
public void processNoti() {}
}

error is as follows

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'Task' defined in URL [jar:file:abc.jar!/abc/report/Task.class]: Initialization of bean failed; nested exception is java.lang.IllegalStateException: Encountered invalid @Scheduled method 'processNotifications': Cron expression must consist of 6 fields (found 1 in "#{@getConfigRetryValue}")
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:921)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:864)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:779)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:503)
	... 41 more
Caused by: java.lang.IllegalStateException: Encountered invalid @Scheduled method 'processNotifications': Cron expression must consist of 6 fields (found 1 in "#{@getConfigRetryValue}")
	at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.processScheduled(ScheduledAnnotationBeanPostProcessor.java:300)
	at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.access$000(ScheduledAnnotationBeanPostProcessor.java:76)
	at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor$1.doWith(ScheduledAnnotationBeanPostProcessor.java:164)
	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:495)
	at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:473)
	at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.postProcessAfterInitialization(ScheduledAnnotationBeanPostProcessor.java:160)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:409)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1520)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
	... 50 more

huangapple
  • 本文由 发表于 2020年5月29日 23:57:12
  • 转载请务必保留本文链接:https://java.coder-hub.com/62089983.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定