The annotation parameter is not dynamic. So if you want to change the expression you will have to restart. This is the short answer to your question.
Here is the link that explains about Spring provided @EnableScheduling
which is very interesting but still does not overcome the static nature of the parameter and hence the need for restart
BTW I wrote an Open Source library called MgntUtils that provides some infrastructure for creating scheduled tasks. It takes more effort to create a running task with that framework then just use @Scheduled
annotation, but it gives you more humanly readable scheduling properties such as "5h", or "20m" for each 5 hours or 20 minutes respectively. (You can read about the solution here).
However, this solution is still not dynamic and will require restart upon parameter value change. But since it is Open source you can get the code and modify it for your needs and to make it dynamic i.e. reacting to parameter change without restart. You can get the library at Maven Central or GitHub