最近比较忙有日子没有更新了,今天更新springcloud 系列最后一个组件,分布式配置中心-springcloud config.
什么是分布式配置中心,他主要提供分布式应用外部化配置进行统一配置管理的作用,比如百度disconf,以及阿里的Diamond等都是比较优秀的分布式配置中心。
springcloud config默认采用git来存储配置,也可以使用svn或者本地化文件系统,这里我们使用的是git存储。
这块内容比较简单,springcloud config 分服务端和客户端,我们下面先来搭建。
maven pom 配置:
<properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR1</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
springboot 程序引导类加上@EnableConfigServer 注解,开启springcloud config 的服务端功能。
@EnableConfigServer@SpringBootApplicationpublic class ConfigServerApplication {public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class, args);}}
application.properties 中添加服务的基本信息以及git仓库地址信息:
spring.application.name=config-serverserver.port=8087spring.cloud.config.server.git.uri=https://gitee.com/ethan-dai/spring-cloud-demospring.cloud.config.server.git.search-paths=demo/config
配置释义:
spring.cloud.config.server.git.uri : 配置git仓库地址
spring.cloud.config.server.git.search-paths: 仓库路径下的相对搜索位置,可以配置多个
spring.cloud.config.server.git.username : git 仓库用户名
spring.cloud.config.server.git.password: git 仓库用户密码
这里没有配置用户名密码,因为我这里公开了仓库,这里我使用的是码云(国内git源码托管方)。
我这里配置的git 地址也就是springcloud 系列所有的demo示例地址:
https://gitee.com/ethan-dai/spring-cloud-demo
大家有需要可以到这里进行代码拉取,在仓库下面创建目录demo/config,也就是上面配置的搜索目录。
接下来启动config 服务,就可以通过curl或者浏览器来访问配置中心了。
访问方式有如下几种:
-
/{application}/{profile}[/{label}]
-
/{application}-{profile}.yml
-
/{label}/{application}-{profile}.yml
-
/{application}-{profile}.properties
-
/{label}/{application}-{profile}.properties
上面的url会映射成{application}-{profile}.propertes对应的配置文件,其中label对应git上不同的分支,默认为master分支.
我们可以访问http://localhost:8087/master/config-dev.properties,
http://localhost:8087/config-dev.properties进行测试,结果都如期返回了:

或者访问http://localhost:8087/config/dev:

config-server 会在本地仓库暂存git仓库的配置,当网络无法访问git仓库的时候会报无法从仓库获取配置,仍然会返回本地仓库的配置信息。
下面我们来创建springcloud config 的客户端应用。
maven pom 依赖:
<properties><java.version>1.8</java.version><spring-cloud.version>Greenwich.SR2</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>
bootstrap.properties:
spring.application.name=config-serveer-clientserver.port=8089spring.cloud.config.name=configspring.cloud.config.uri=http://localhost:8087spring.cloud.config.profile=devspring.cloud.config.label=master
这里的配置就不解释了,几乎就是见名知道意了。
这里有个小坑,springcloud config 的配置必须配置在bootstrap.properties中,如果建在application.properties 中是无法正常启动项目的。
然后我们创建个访问配置的代码:
@RestController@RefreshScopepublic class TestController {@Value("${config.server.name}")private String serverName;@GetMapping("config")public String test() {return serverName;}}
然后启动服务器,输入http://localhost:8089/config

如图我们访问到了配置中心的配置数据。到这里springcloud config 配置中心就讲解完了,这一节也比较简单,也属于springcloud 中比较简单的一个组件,而且也不是必选组件。
如有不对之处欢迎指教!

本文详细介绍了Spring Cloud Config作为分布式配置中心的作用,包括如何搭建服务端和客户端,以及如何使用Git存储配置。文章还提供了Maven配置、访问配置中心的方式,并解决了常见问题。
1426

被折叠的 条评论
为什么被折叠?



