3.配置文件管理
所有服务的配置文档均保存于 gitlab 上,并通过配置服务 config-service 来获取配置。每
个服务在 gitlab 均保存一份以服务 id 命名的 properties 文件。
以服务 spring-boot-demo 为例 ,其在 gitlab 上的配置文件为
spring-boot-demo.properties ,文件名对应于该服务的 bootstrap.properties 中配置的
spring.application.name 的 value 值。如果名称不一致,配置服务将拿不到正确的配置信息。
在 spring-boot-demo.properties 中通常配置该服务的启动端口、数据库连接参数等
信息。 当该文件有更新并 push 到 gitlab 后,配置服务会自动通知客户端服务更新配置信
息。
关键配置:
在主程序中需要访问配置文件的类名上加上注解:@RefreshScope,如果没有该注解,
配置服务将不能主动通知客户端服务更新配置。 如下:
@RefreshScope
@RestController
public class MessageRestController {
@Value("${message:Hello default}")
private String message;
@RequestMapping("/message")
String getMessage() {
return this.message;
}
}
当 spring-boot-demo.properties 文件里的 message 变量发生变化后,请求/message 时返回的
message 值将是更新后的 message 内容。
pom.xml 关键依赖项:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
同时需要引入 spring cloud 的依赖项
<dependencyManagement>