spring-cloud之配置管理:
spring-cloud使用spring-cloud-config模块提供配置管理服务,可以使用两种方式:基于共享文件系统形式,基于配置管理形式。通过配置管理,将项目的配置文件统一到配置管理服务进行管理,所有的服务实例在启动时都需要从配置管理服务获得配置文件,进行服务实例的配置,通过提供统一的配置管理服务,根据profile确定具体的环境配置,可以保证各个实例的配置一致性,避免传统开发形式下,部署服务,进行配置常发生的错配,漏配等,避免因配置问题导致的各种难以排查的系统异常。防止了配置漂移的发生。
基于文件系统的配置管理
配置服务的核心依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
application.yml的核心配置
server:
port: 8888
spring:
profiles:
active: native
cloud:
config:
server:
native:
searchLocations: file:///Users/username/CodingSpace/IdeaProject/cloud-project/config-service/src/main/resources/config/licensingservice
指定了配置服务的端口,默认生效的配置环境此处为本地文件系统方式,配置文件所处的系统路径。获得配置时,默认配置总会返回,然后根据具体环境配置,进行相应的属性值覆盖。
基于配置管理的配置服务,如Git
application.yml核心配置
server:
port: 8888
spring:
cloud:
config:
server:
git:
uri: http://xxx.com.cn/xxx.git
search-paths: licensingservice, userservice
username: xxx
password: xxx
配置服务启动类核心配置
@SpringBootApplication
@EnableConfigServer // 标记为spring cloud config 服务
public class ConfApplication {
public static void main(String[] args) {
SpringApplication.run(ConfApplication.class, args);
}
}
业务服务连接配置服务
配置服务客户端核心依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
bootstrap.yml核心配置
server:
port: 8080
spring:
application:
name: licensingservice
profiles:
active: dev
cloud:
config:
uri: http://localhost:8888
配置服务端口,应用名称此处与配置服务中文件的服务名称一致,读取配置的环境为dev,设置配置服务的访问的uri
服务启动时加载先加载bootstrap.yml文件,所有默认配置项都会被自动进行设置,其它自定义配置,需要在代码中手动进行配置
使用spring的
value()
进行配置注入
要使配置配置服务配置文件修改后可以被应用加载,可以使用refresh端点,先配置刷新注解
@SpringBootApplication()
@RefreshScope
public class LicensingServiceApplication {
}
在启动类增加注解,配置文件修改后可以调用http://ip:port/refresh 强制重新加载配置数据。