下面我将详细讲解“@Scheduled 如何读取动态配置文件”的攻略:
1. 添加依赖
在项目的 pom.xml 文件中添加如下依赖:
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.29</version>
</dependency>
这里使用了 SnakeYAML 库来解析 YAML 文件。
2. 添加配置文件
在项目中添加一个动态配置文件,比如我们创建一个 schedule.yml
文件,内容如下:
schedule:
cron: "0/30 * * * * ?" # 每 30 秒执行一次
enabled: true
3. 创建配置类
创建一个配置类,用来将读取的配置数据映射为对象,代码如下:
@Configuration
@ConfigurationProperties(prefix = "schedule")
public class ScheduleConfig {
private String cron;
private Boolean enabled;
// getter 和 setter 略
@Override
public String toString() {
return "ScheduleConfig{" +
"cron='" + cron + '\'' +
", enabled=" + enabled +
'}';
}
}
这里使用了 Spring Boot 的 @ConfigurationProperties
注解将配置映射为对象。prefix
表示配置文件中的前缀,这里为 schedule
。
4. 创建定时任务
在定时任务中使用 @Scheduled
注解,并注入配置类,代码如下:
@Component
public class ScheduleTask {
private ScheduleConfig scheduleConfig;
public ScheduleTask(ScheduleConfig scheduleConfig) {
this.scheduleConfig = scheduleConfig;
}
@Scheduled(cron = "#{@scheduleConfig.getCron()}")
public void schedule() {
if (scheduleConfig.isEnabled()) {
// 执行任务
System.out.println("Hello world.");
}
}
}
在 @Scheduled
注解中使用 SpEL 表达式将 cron
属性值设置为从 ScheduleConfig
对象中读取。同时,在执行定时任务时,判断 enabled
属性是否为 true
,如果为 true
则执行定时任务,否则不执行。
5. 示例说明
示例一
修改 schedule.yml
文件的 cron
属性为 0/10 * * * * ?
,即每 10 秒执行一次定时任务。
在运行项目后,定时任务每 10 秒就会执行一次,控制台输出如下:
Hello world.
Hello world.
Hello world.
Hello world.
示例二
将 schedule.yml
文件的 enabled
属性设置为 false
,即禁用定时任务。
在运行项目后,因为 enabled
属性被设置为了 false
,所以定时任务不会被执行,控制台不会有任何输出。
以上就是“@Scheduled 如何读取动态配置文件”的完整攻略说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:@Scheduled 如何读取动态配置文件 - Python技术站