When using the Spring 3.0 capability to annotate a scheduled task, I would like to set the fixedDelay
as parameter from my configuration file, instead of hard-wiring it into my task class, like currently...
@Scheduled(fixedDelay = 5000)
public void readLog() {
...
}
Unfortunately it seems that with the means of the Spring Expression Language (SpEL) @Value
returns a String object which in turn is not able to be auto-boxed to a long value as required by the fixedDelay
parameter.
I guess the @Scheduled
annotation is out of question. So maybe a solution for you would be to use task-scheduled
XML configuration. Let's consider this example (copied from Spring doc):
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="someObject" method="readLog"
fixed-rate="#{YourConfigurationBean.stringValue}"/>
</task:scheduled-tasks>
... or if the cast from String to Long didn't work, something like this would:
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="someObject" method="readLog"
fixed-rate="#{T(java.lang.Long).valueOf(YourConfigurationBean.stringValue)}"/>
</task:scheduled-tasks>
Again, I haven't tried any of these setups, but I hope it might help you a bit.