Java spring批注@Scheduled.fixedDelayString不支持Spel
我想在属性文件中以秒为单位配置Java spring批注@Scheduled.fixedDelayString不支持Spel,java,spring,spring-annotations,spring-el,Java,Spring,Spring Annotations,Spring El,我想在属性文件中以秒为单位配置固定延迟,然后在@Scheduled注释中将其转换为毫秒 我希望这能奏效: @Scheduled(fixedDelayString=“#{${my.scheduler.fixed.delay}*1000}”) 但它抛出了一个例外: 原因:java.lang.IllegalStateException:遇到无效 @计划的方法“myMethod”:无效的fixedDelayString值“#{5”* 1000}”-无法在处解析为整数 org.springframewo
固定延迟
,然后在@Scheduled
注释中将其转换为毫秒
我希望这能奏效:
@Scheduled(fixedDelayString=“#{${my.scheduler.fixed.delay}*1000}”)
但它抛出了一个例外:
原因:java.lang.IllegalStateException:遇到无效
@计划的方法“myMethod”:无效的fixedDelayString值“#{5”*
1000}”-无法在处解析为整数
org.springframework.scheduling.annotation.ScheduledAnotationBeanPostProcessor.processScheduled(ScheduledAnotationBeanPostProcessor.java:384)
~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]at
org.springframework.scheduling.annotation.ScheduledAnotationBeanPostProcessor$1.doWith(ScheduledAnotationBeanPostProcessor.java:227)
~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
${my.scheduler.fixed.delay}
已正确解析,但表达式未解析
我试图配置自己的StringValueResolver
:
私有静态类CustomValueResolver
实现StringValueResolver{
私有最终可配置beanFactory beanFactory;
私有final ExpressionParser ExpressionParser;
公共CustomValueResolver(最终可配置beanFactory beanFactory,最终表达式解析器ExpressionParser){
this.beanFactory=beanFactory;
this.expressionParser=expressionParser;
}
@凌驾
公共字符串resolveStringValue(
最终字符串(标准字符串){
字符串值=this.beanFactory.resolveEmbeddedValue(strVal);
if(value.startsWith(“#{”)){
value=this.expressionParser.parseExpression(value).getValue(String.class);
}
返回值;
}
}
但是我没有找到注入自定义CustomValueResolver
的方法
我的方法是对的还是错的?还有其他简单的方法吗?从Spring Framework 4.3.RC1开始就支持这种方法。请尝试一下。有什么解决方案吗?@Normal现在我在没有SPEL的情况下工作,等待4.3.0。RELEASE@Normal,现在在4.3.x中运行良好