在 Spring Boot 中实现 YAML 配置文件的动态刷新,可以使用 Spring Cloud Config 和 Spring Boot Actuator。下面是实现步骤:
在项目的 pom.xml
文件中添加 Spring Cloud Config 和 Spring Boot Actuator 的依赖:
<!-- Spring Cloud Config -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- Spring Boot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
在 application.yml
或 application.properties
文件中添加以下配置:
spring:
cloud:
config:
uri: http://localhost:8888 # 配置中心地址
username: user # 配置中心用户名(如果有)
password: password # 配置中心密码(如果有)
profile: dev # 配置文件的环境
label: master # 配置文件的分支
application:
name: my-app # 应用名称
management:
endpoints:
web:
exposure:
include: '*' # 开放所有端点
在配置中心(如 Git 仓库)创建一个名为 {application}-{profile}.yml
的配置文件,例如 my-app-dev.yml
。在这个文件中添加需要动态刷新的配置。
@RefreshScope
注解在需要动态刷新的 Bean 上添加 @RefreshScope
注解。例如:
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
@Component
@RefreshScope
public class MyConfig {
@Value("${my.config.property}")
private String property;
}
通过调用 Actuator 的 /actuator/refresh
端点来刷新配置。可以使用 curl
命令或者 Postman 等工具发送 POST 请求:
curl -X POST http://localhost:8080/actuator/refresh
这样,当配置中心的配置文件发生变化时,可以通过调用 /actuator/refresh
端点来动态刷新应用的配置。