@[toc]
SpringCloud 使用SpringCloudConfig配置远程配置中心
前言
随着服务数量越来越多,模块越来越多我们的各种服务的配置文件也越来越多,同时多个服务在项目中采用配置文件的方式,越来越显得力不从心,往往一次更改配置文件很是麻烦,这时候SpringCloudConfig出现,他的出现让我们集中配置配置文件,服务端集中管理,客户端一次读取,同时采用更改推送的方式,即时同步更新配置文件,可谓方便至极,极大的解放了长修改多个配置文件生产力。
远程git仓库
首先需要注册一个远程存储配置文件的存储仓库,用来存储各种配置文件。
新建一个git仓库
然后新建一个mysql的配置文件 一个测试 一个dev
然后提交到Github
点击红色区域获取git链接
内容如下
# 数据库驱动:
driverClassName=com.mysql.jdbc.Driver
# 数据库链接地址:
url=jdbc:mysql://101.10.10.10:3306/db_app?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
#数据库用户名:
username=root
# 数据库密码:
password=root
配置注册中心
导入config-server依赖
<!-- springcloud 依赖管理-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
<exclusions>
</exclusions>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 子功能依赖-->
<dependencies>
<!-- config-server 依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
配置yml文件
1 需要配置将此服务注册到注册中心,这里采用也可以自己注册自己,注册到注册中心可以让其他服务进行读取配置。 需要说明当config-server启动的时候会把远端git仓库拉取到本地,至于拉到本地哪,在下面的 basedir 配置。 2 远端git可以使用账号密码,也可以配置私钥访问,比如配置 private-key
#指定服务名称
spring.application.name=config-server
#tomcat端口
server.port=5001
#配置服务注册中心
#配置git仓库地址
spring.cloud.config.server.git.uri=https://github.com/pomestyle/spring-config-server.git
#配置仓库路径
#spring.cloud.config.server.git.searchPaths=respo
#配置仓库的分支
spring.cloud.config.label=master
# 访问git仓库的用户名
#spring.cloud.config.server.git.username=your username
#访问git仓库的用户密码
#spring.cloud.config.server.git.password=your password
main 启动类
在程序的启动类 ConfigServerApplication 通过 @EnableConfigServer 开启 SpringCloudConfig 服务端
//启用configServer
@EnableConfigServer
@SpringBootApplication
public class SpringcloudconfigserverApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudconfigserverApplication.class, args);
}
}
访问配置文件
启动config-server 在启动完成后我们可以按照如下规则访问 config-server 服务端
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
label : git仓库的分支
application :配置文件的文件名,如我的残酷里的clientOne.yml 中的“clientOne”,对应服务的应用名,这个后面再说
profile:这个很熟悉,配置文件的后缀,可以对应服务启用的环境
访问配置文件
- 默认访问 默认访问的是master分支
- 分支访问
访问mysql-dev.properties
访问mysql-test.properties
yaml格式的配置,使用properties格式的也是一样的
或者 http://127.0.0.1:5001/mysql/dev 访问
config-client客户端
添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!--eurekaClient-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
main方法
//启动eureka客户端服务
@EnableEurekaClient
yml
将applicatin.properties改为bootstrap.properties bootstrap.properties 文件启动优先于 applicatin.properties伴随着服务器启动并访问远程配置中心
# cloud-config-client配置
spring.application.name=config-server
#指明远程仓库的分支
spring.cloud.config.label=master
spring.cloud.config.name=mysql-test
#指明配置文件环境
#dev开发环境配置文件
#test测试环境
#pro正式环境
spring.cloud.config.profile=test
#指明配置服务中心的网址
spring.cloud.config.uri=http://127.0.0.1:5001/
server.port=8080
获取文件内容
在程序的启动类 ConfigClientApplication 通过 @Value 获取服务端的 password 值的内容
@SpringBootApplication
@RestController
public class SpringcloudconfigclientApplication {
@Value("${password}")
private String password;
@GetMapping("/getMessage")
public String getPassword(){
System.out.println("password = " + password);
return this.password;
}
public static void main(String[] args) {
SpringApplication.run(SpringcloudconfigclientApplication.class, args);
}
}
访问
2 使用eureka作为注册中心配置
服务端配置
application.properties 配置文件基本不变
#指定服务名称
spring.application.name=config-eureka-server
#tomcat端口
server.port=5003
#配置服务注册中心
#配置git仓库地址
spring.cloud.config.server.git.uri=https://github.com/pomestyle/springcloud.git
#配置仓库路径
spring.cloud.config.server.git.searchPaths=springcloud-config/spring-config-server
#配置仓库的分支
spring.cloud.config.label=master
# 访问git仓库的用户名
#spring.cloud.config.server.git.username=your username
#访问git仓库的用户密码
#spring.cloud.config.server.git.password=your password
#添加 eureka 注册中心地址
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:6868/eureka/
添加eureka启动依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
main方法 @EnableEurekaClient 启动eureka服务端提供者服务
//启用configServer
@EnableConfigServer
@EnableEurekaClient
@SpringBootApplication
public class SpringcloudconfigserverApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudconfigserverApplication.class, args);
}
}
启动可以访问
客户端client
拉取的配置应用名字
的配置 spring.application.name=mysql-test
是配置文件的名字
bootstrap.properties 配置文件
#tomcat端口
server.port=5004
#password=12333333
# 拉取的配置应用名字
spring.application.name=mysql-test
#springboot 1.5.X 以上默认开始开通了安全认证
management.security.enabled=false
#指明远程仓库的分支
spring.cloud.config.label=master
#指明配置文件
spring.cloud.config.profile=dev
#添加 eureka 注册中心地址
eureka.client.serviceUrl.defaultZone=http://127.0.0.1:6868/eureka/
#是从配置中心读取文件。
spring.cloud.config.discovery.enabled=true
#配置中心的servieId,服务名称,通过服务名称去 Eureka注册中心找服务
spring.cloud.config.discovery.serviceId=config-eureka-server
spring.cloud.config.server.git.uri:配置git仓库地址 spring.cloud.config.server.git.searchPaths:配置仓库路径 spring.cloud.config.label:配置仓库的分支 spring.cloud.config.server.git.username:访问git仓库的用户名 spring.cloud.config.server.git.password:访问git仓库的用户密码 eureka.client.serviceUrl.defaultZone:eureka注册中心地址
main方法启动
@SpringBootApplication
@EnableEurekaClient
@RestController
@RefreshScope // 使用该注解的类,会在接到SpringCloud配置中心配置刷新的时候,自动将新的配置更新到该类对应的字段中。
public class SpringcloudconfigserverApplication {
public static void main(String[] args) {
SpringApplication.run(SpringcloudconfigserverApplication.class, args);
}
@Value("${password}")
private String password;
@GetMapping("/getMessage")
public String getPassword() {
System.out.println("password = " + password);
return this.password;
}
}
代码地址 传送门
来源:oschina
链接:https://my.oschina.net/u/3983909/blog/3197626