I have a requirement to run a batch job at a fixed interval and have the ability to change the time of this batch job at runtime. For this I came across @Scheduled annotatio
You can use a Trigger to dynamically set the next execution time. See my answer here:
Trigger
Scheduling a job with Spring programmatically (with fixedRate set dynamically)