-
Notifications
You must be signed in to change notification settings - Fork 38.6k
Closed
Closed
Copy link
Labels
in: coreIssues in core modules (aop, beans, core, context, expression)Issues in core modules (aop, beans, core, context, expression)status: duplicateA duplicate of another issueA duplicate of another issuetype: enhancementA general enhancementA general enhancement
Description
Sidi Amine Bouhamidi opened SPR-14137 and commented
I want to configure the fixedDelay in seconds in my properties file, then I want to convert it to millis in @Scheduled
Annotation.
I expected this to work :
@Scheduled(fixedDelayString = "#{${my.scheduler.fixed.delay} * 1000}")
but it throw this exception
Caused by: java.lang.IllegalStateException: Encountered invalid @Scheduled method 'myMethod': Invalid fixedDelayString value "#{5 * 1000}" - cannot parse into integer
at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.processScheduled(ScheduledAnnotationBeanPostProcessor.java:384) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor$1.doWith(ScheduledAnnotationBeanPostProcessor.java:227) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
${my.scheduler.fixed.delay} was correctly resloved but the expression was not resloved.
I tried to configure my own StringValueResolver
private static class CustomValueResolver
implements StringValueResolver {
private final ConfigurableBeanFactory beanFactory;
private final ExpressionParser expressionParser;
public CustomValueResolver(final ConfigurableBeanFactory beanFactory, final ExpressionParser expressionParser) {
this.beanFactory = beanFactory;
this.expressionParser = expressionParser;
}
@Override
public String resolveStringValue(
final String strVal) {
String value = this.beanFactory.resolveEmbeddedValue(strVal);
if (value.startsWith("#{")) {
value = this.expressionParser.parseExpression(value).getValue(String.class);
}
return value;
}
}
But I don't find the way to inject my custom CustomValueResolver.
Am I on the right or wrong way? is there another simple way
Issue Links:
- Support SpEL next to placeholders in annotation attributes (e.g. @Scheduled) [SPR-13625] #18203 Support SpEL next to placeholders in annotation attributes (e.g.
@Scheduled
) ("duplicates")
Metadata
Metadata
Assignees
Labels
in: coreIssues in core modules (aop, beans, core, context, expression)Issues in core modules (aop, beans, core, context, expression)status: duplicateA duplicate of another issueA duplicate of another issuetype: enhancementA general enhancementA general enhancement