Spring Cloud Config构建配置中心 「爱情、让人受尽委屈。」 2022-04-22 05:20 146阅读 0赞 1. # Spring Cloud Config是什么,能做什么? # 它是通过SpringBoot构造的,用来为分布式系统提供配置中心。由中心来管理所有环境应用程序的属性,便于在整个项目周期统一调配配置。支持将信息放在github中,在服务端做简单的配置即可从远程仓库中获取配置信息,而所有的客户端只需要指定去获取信息的服务连接,然后就可以直接使用各种变量信息。 2. # Spring Cloud Config构建 # 1. ## Server端构建 ## > 先去github创建个repository(当然可以使用默认的,需要配置spring.config.name=configserver,因为Spring-cloud-config-server-\*.jar包中已经给出了默认的服务器配置信息和测试地址,Spring-cloud-config-server-2.0.2.jar的文件中叫configserver.yml),然后创建一个创建一个目录和一个文件,用来做服务器同步数据测试。比如我已经创建好的https://github.com/poetLoo/gitRepository > > 创建一个SpringBoot项目,然后配置Spring Cloud config依赖,启动类中加入注解:@EnableConfigServer > > 。我这里使用maven来构建项目,具体的pom如下: > > <?xml version="1.0" encoding="UTF-8"?> > <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> > <modelVersion>4.0.0</modelVersion> > > <groupId>com.example</groupId> > <artifactId>springCloud</artifactId> > <version>0.0.1-SNAPSHOT</version> > <packaging>jar</packaging> > > <name>springCloudConfig</name> > <description>Demo project for Spring Boot</description> > > <parent> > <groupId>org.springframework.boot</groupId> > <artifactId>spring-boot-starter-parent</artifactId> > <version>2.1.0.RELEASE</version> > <relativePath/> <!-- lookup parent from repository --> > </parent> > > <properties> > <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> > <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> > <java.version>1.8</java.version> > </properties> > > <dependencyManagement> > <dependencies> > <dependency> > <groupId>org.springframework.cloud</groupId> > <artifactId>spring-cloud-dependencies</artifactId> > <version>Finchley.SR2</version> > <type>pom</type> > <scope>import</scope> > </dependency> > </dependencies> > </dependencyManagement> > > <dependencies> > > <dependency> > <groupId>org.springframework.cloud</groupId> > <artifactId>spring-cloud-starter-config</artifactId> > </dependency> > <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> > > <build> > <plugins> > <plugin> > <groupId>org.springframework.boot</groupId> > <artifactId>spring-boot-maven-plugin</artifactId> > </plugin> > </plugins> > </build> > > > </project> > > 需要注意的是,Spring boot和Spring cloud的版本要能对应起来,否则项目启动会报错.版本对应关系: > > <table style="width:500px;"> > <tbody> > <tr> > <th>Spring Cloud</th> > <th>Spring Boot</th> > </tr> > <tr> > <td>Finchley</td> > <td>兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x</td> > </tr> > <tr> > <td>Dalston和Edgware</td> > <td>兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x</td> > </tr> > <tr> > <td>Camden</td> > <td>兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x</td> > </tr> > <tr> > <td>Brixton</td> > <td>兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x</td> > </tr> > <tr> > <td>Angel</td> > <td>兼容Spring Boot 1.2.x</td> > </tr> > </tbody> > </table> > > 如果使用我们自己的repository,那么application.yml配置如下: > > server: > port: 8888 > > spring: > cloud: > config: > server: > git: > #指定配置中心地址 > uri: https://github.com/poetLoo/cloudConfig > #设置搜索目录,如果不设置,默认只搜索根目录 > search-paths: > - myConfig > name: server > application: > name: configServer > > 启动后在请求地址:[http://localhost:8888/config-sample/master][http_localhost_8888_config-sample_master]。 > > 返回信息如下: > > { > "name": "config-sample", > "profiles": [ > "master" > ], > "label": null, > "version": "168139978ce7b76e646f222cc6fb1ff8f2203366", > "state": null, > "propertySources": [ > { > "name": "https://github.com/poetLoo/cloudConfig/myConfig/config-sample.yml", > "source": { > "appName": "poetLav", > "version": "1.0.0" > } > } > ] > } > > 请求格式和资源映射如下:「比如我将上面的search-paths配置为 '\{profile\}',那我就可以像这样请求[http://localhost:8888/config-sample/myConfig/master][http_localhost_8888_config-sample_myConfig_master]」 > > /{application}/{profile}[/{label}] > /{application}-{profile}.yml > /{label}/{application}-{profile}.yml > /{application}-{profile}.properties > /{label}/{application}-{profile}.properties 2. ## Client端构建 ## 新建一个项目,作为客户端构建和服务端基本一致,在pom中多加一个依赖,表示是一个web服务 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 主要是在resource目录下添加一个bootstrap.yml文件,基本配置如下: spring: application: name: config-sample cloud: config: uri: - http://localhost:8888 添加一个简单的controller: import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloConfigController { @Value("${appName}") String name; @Value("${version}") String version; @RequestMapping("/helloConfig") public Object hello() { return "hello " + name +" version:"+ version; } } 请求[http://localhost:8080/helloConfig][http_localhost_8080_helloConfig],输出:hello poetLav version:1.0.0 说明已经从服务器端同步到配置数据。 3. # 总结 # Spring cloud Config Server端的repository可以由多种方式,默认是使用远程git仓库、还可以是本地文件系统、自己搭建配置中心的方式。由于git本身是一个分布式版本控制系统,可以方便的查看和追踪资源变更记录,便于管理,所以默认推荐。 server端还由其他一些配置策略,比如同步远程仓库的版本、是否启动时克隆配置信息到本地、连接不上远程配置时处理等,在使用到的时候可以去探索。 4. 参考:[https://www.cnblogs.com/boboooo/p/8796636.html?utm\_source=debugrun&utm\_medium=referral][https_www.cnblogs.com_boboooo_p_8796636.html_utm_source_debugrun_utm_medium_referral] [https://blog.csdn.net/hunan961/article/details/79230859][https_blog.csdn.net_hunan961_article_details_79230859] [https://www.cnblogs.com/ouyida3/p/9125413.html][https_www.cnblogs.com_ouyida3_p_9125413.html] [http_localhost_8888_config-sample_master]: http://localhost:8888/config-sample/master [http_localhost_8888_config-sample_myConfig_master]: http://localhost:8888/config-sample/myConfig/master [http_localhost_8080_helloConfig]: http://localhost:8080/helloConfig [https_www.cnblogs.com_boboooo_p_8796636.html_utm_source_debugrun_utm_medium_referral]: https://www.cnblogs.com/boboooo/p/8796636.html?utm_source=debugrun&utm_medium=referral [https_blog.csdn.net_hunan961_article_details_79230859]: https://blog.csdn.net/hunan961/article/details/79230859 [https_www.cnblogs.com_ouyida3_p_9125413.html]: https://www.cnblogs.com/ouyida3/p/9125413.html
还没有评论,来说两句吧...