Spring Cloud Config
Spring Cloud Config 分布式配置中心使用教程
Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment
和PropertySource
抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。
二、构建Config Server
创建一个spring-boot项目,取名为config-server,pom.xml中引入依赖:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!--表示为web工程-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--暴露各种指标 貌似是必须的 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
application.properties:
server.port=8890
spring.cloud.config.server.default-application-name=config-server
# 配置git仓库地址
spring.cloud.config.server.git.uri=https://github.com/s***w*/myspringcloudconfig
# 配置仓库路径
spring.cloud.config.server.git.search-paths=myconfigpath
# 配置仓库的分支
spring.cloud.config.label=master
# 访问git仓库的用户名
spring.cloud.config.server.git.username=abc
# 访问git仓库的用户密码 如果Git仓库为公开仓库,可以不填写用户名和密码,如果是私有仓库需要填写
spring.cloud.config.server.git.password=abc
远程仓库https://github.com/shaweiwei/myspringcloudconfig/ 中有个文件config-client-dev.properties文件中有一个属性:
myww=myww version 2
启动程序:访问http://localhost:7010/myww/dev
证明配置服务中心可以从远程程序获取配置信息。
http请求地址和资源文件映射如下:
- /{application}/{profile}[/{label}]
- /{application}-{profile}.yml
- /{label}/{application}-{profile}.yml
- /{application}-{profile}.properties
- /{label}/{application}-{profile}.properties
三、构建一个config client
重新创建一个springboot项目,取名为config-client,其pom文件引入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
其配置文件bootstrap.properties:
# 和git里的文件名对应
spring.application.name=config-client
# 远程仓库的分支
spring.cloud.config.label=master
# dev 开发环境配置文件 | test 测试环境 | pro 正式环境
# 和git里的文件名对应
spring.cloud.config.profile=dev
# 指明配置服务中心的网址
spring.cloud.config.uri= http://localhost:7010/
server.port=7020
程序的入口类,写一个API接口“/hi”,返回从配置中心读取的foo变量的值,代码如下:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class BootApplication {
public static void main(String[] args) {
SpringApplication.run(BootApplication.class, args);
}
@Value("${myww}") // git配置文件里的key
String myww;
@RequestMapping(value = "/hi")
public String hi(){
return myww;
}
}
打开网址访问:http://localhost:7020/hi,网页显示:
myww version 2
这就说明,config-client从config-server获取了foo的属性,而config-server是从git仓库读取的,如图:
上一篇: mac安装homebrew,报错curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refuse
推荐阅读
-
Spring Boot项目实战之拦截器与过滤器
-
spring boot tomcat jdbc pool的属性绑定
-
Spring MVC框架配置方法详解
-
解决Spring国际化文案占位符失效问题的方法
-
spring boot整合mybatis+mybatis-plus的示例代码
-
详解利用spring-security解决CSRF问题
-
spring boot 使用Aop通知打印控制器请求报文和返回报文问题
-
Spring中如何获取request的方法汇总及其线程安全性分析
-
Spring MVC HelloWorld入门及运行机制 (一)
-
spring boot 打jar包,获取resource路径下的文件