如何动态刷新 @Scheduled的cron 值
时间: 2023-11-24 12:53:06 浏览: 65
您可以使用Spring的@Scheduled注释来动态刷新cron值。以下是一些步骤:
1. 创建一个类来保存cron值:
```java
@Component
public class CronConfig {
private String cronValue;
public String getCronValue() {
return cronValue;
}
public void setCronValue(String cronValue) {
this.cronValue = cronValue; }
}
```
2. 在@Scheduled注释中使用cron表达式:
```java
@Scheduled(cron = "#{@cronConfig.getCronValue()}")
public void performJob() throws Exception {
// do something
}
```
3. 创建一个RESTful端点来更新cron值:
```java
@RestController
public class CronController {
@Autowired
private CronConfig cronConfig;
@PostMapping("/cron")
public void setCronValue(@RequestBody String cronValue) {
cronConfig.setCronValue(cronValue);
}
}
```
现在,您可以通过向RESTful端点发送POST请求来更新cron值。例如,如果您的应用程序正在运行localhost:8080,则可以使用以下命令更新cron值:
```shell
curl -X POST -H "Content-Type: text/plain" -d "0 0/5 * * * ?" http://localhost:8080/cron
```
这将将cron值设置为“0 0/5 * * * ?”,表示每5分钟运行一次。
阅读全文