一、官网介绍
【英文说明】
【中文说明】
【通俗中文解释】 --解释来源:--https://blog.csdn.net/forezp/article/details/81041028
在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置服务放在配置服务的内存中(即本地),也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server,二是config client。
二、配置中心服务器配置并启动、如下:
第一步:创建一个SpringBoot工程,名称为Config-server,如下:
第二步:引入依赖(pom如下)
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <parent>
6 <groupId>org.springframework.boot</groupId>
7 <artifactId>spring-boot-starter-parent</artifactId>
8 <version>2.2.2.RELEASE</version>
9 <relativePath/> <!-- lookup parent from repository -->
10 </parent>
11 <groupId>com.example</groupId>
12 <artifactId>config</artifactId>
13 <version>0.0.1-SNAPSHOT</version>
14 <name>config</name>
15 <description>Demo project for Spring Boot</description>
16
17 <properties>
18 <java.version>1.8</java.version>
19 <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
20 </properties>
21
22 <dependencies>
23 <dependency>
24 <groupId>org.springframework.cloud</groupId>
25 <artifactId>spring-cloud-config-server</artifactId>
26 </dependency>
27 <dependency>
28 <groupId>org.springframework.cloud</groupId>
29 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
30 </dependency>
31
32 <dependency>
33 <groupId>org.springframework.boot</groupId>
34 <artifactId>spring-boot-starter-test</artifactId>
35 <scope>test</scope>
36 <exclusions>
37 <exclusion>
38 <groupId>org.junit.vintage</groupId>
39 <artifactId>junit-vintage-engine</artifactId>
40 </exclusion>
41 </exclusions>
42 </dependency>
43 </dependencies>
44
45 <dependencyManagement>
46 <dependencies>
47 <dependency>
48 <groupId>org.springframework.cloud</groupId>
49 <artifactId>spring-cloud-dependencies</artifactId>
50 <version>${spring-cloud.version}</version>
51 <type>pom</type>
52 <scope>import</scope>
53 </dependency>
54 </dependencies>
55 </dependencyManagement>
56
57 <build>
58 <plugins>
59 <plugin>
60 <groupId>org.springframework.boot</groupId>
61 <artifactId>spring-boot-maven-plugin</artifactId>
62 </plugin>
63 </plugins>
64 </build>
65
66 </project>
下载依赖完成后
第三步:启动类配置注解
配置:@EnableConfigServer 如下:
1 package com.example.config;
2 import org.springframework.boot.SpringApplication;
3 import org.springframework.boot.autoconfigure.SpringBootApplication;
4 import org.springframework.cloud.config.server.EnableConfigServer;
5 @SpringBootApplication
6 @EnableConfigServer
7 public class ConfigApplication {
8 public static void main(String[] args) {
9 SpringApplication.run(ConfigApplication.class, args);
10 }
11
12 }
第四步:编写application.properties配置文件
1 server.port=8760
2 spring.application.name=Config-Server
3 #用的是gitlab
4 spring.cloud.config.server.git.uri=https://git.lug.ustc.edu.cn/fanyuyi/hello.git
5 spring.cloud.config.server.git.search-paths=respo
6 spring.cloud.config.label=master
7 spring.cloud.config.server.git.username=
8 spring.cloud.config.server.git.password=
9 eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
git配置
1.spring.cloud.config.server.git.uri=
2.spring.cloud.config.server.git.search-paths=
3.spring.cloud.config.label=
4.dev
第五步:启动
1.启动Eureka注册中心
2.启动Config-Server
第六步:访问
http://localhost:8760/aa/dev (aa是随便写的)得到如下图的json
三、配置中心客户端配置并启动、如下:
第一步:创建一个SpringBoot工程,名称为Config-Client,如下:
第二步:引入依赖(pom如下)
1 <?xml version="1.0" encoding="UTF-8"?>
2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <parent>
6 <groupId>org.springframework.boot</groupId>
7 <artifactId>spring-boot-starter-parent</artifactId>
8 <version>2.2.2.RELEASE</version>
9 <relativePath/> <!-- lookup parent from repository -->
10 </parent>
11 <groupId>com.example</groupId>
12 <artifactId>client</artifactId>
13 <version>0.0.1-SNAPSHOT</version>
14 <name>client</name>
15 <description>Demo project for Spring Boot</description>
16
17 <properties>
18 <java.version>1.8</java.version>
19 <spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
20 </properties>
21
22 <dependencies>
23 <dependency>
24 <groupId>org.springframework.boot</groupId>
25 <artifactId>spring-boot-starter-web</artifactId>
26 </dependency>
27 <dependency>
28 <groupId>org.springframework.cloud</groupId>
29 <artifactId>spring-cloud-starter-config</artifactId>
30 </dependency>
31 <dependency>
32 <groupId>org.springframework.cloud</groupId>
33 <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
34 </dependency>
35
36 <dependency>
37 <groupId>org.springframework.boot</groupId>
38 <artifactId>spring-boot-starter-test</artifactId>
39 <scope>test</scope>
40 <exclusions>
41 <exclusion>
42 <groupId>org.junit.vintage</groupId>
43 <artifactId>junit-vintage-engine</artifactId>
44 </exclusion>
45 </exclusions>
46 </dependency>
47 </dependencies>
48
49 <dependencyManagement>
50 <dependencies>
51 <dependency>
52 <groupId>org.springframework.cloud</groupId>
53 <artifactId>spring-cloud-dependencies</artifactId>
54 <version>${spring-cloud.version}</version>
55 <type>pom</type>
56 <scope>import</scope>
57 </dependency>
58 </dependencies>
59 </dependencyManagement>
60
61 <build>
62 <plugins>
63 <plugin>
64 <groupId>org.springframework.boot</groupId>
65 <artifactId>spring-boot-maven-plugin</artifactId>
66 </plugin>
67 </plugins>
68 </build>
69
70 </project>
第三步:写一个controller
1 package com.example.client.web;
2
3 import org.springframework.beans.factory.annotation.Value;
4 import org.springframework.web.bind.annotation.RequestMapping;
5 import org.springframework.web.bind.annotation.RequestParam;
6 import org.springframework.web.bind.annotation.RestController;
7
8 @RestController
9 public class MyControler {
10
11 @Value("${foo}")
12 String foo;
13
14 @RequestMapping("/hi")
15 public String web(@RequestParam(name="name",defaultValue = "lisi") String name){
16 return "hello my name is ["+name+"]"+"-"+foo;
17 }
18 }
第四步:编写application.properties配置文件 ,不,是bootstrap.priperties配置文件
1 server.port=8080
2 spring.cloud.config.profile=dev
3 spring.cloud.config.label=master
4 spring.cloud.config.uri=http://localhost:8760/
5 spring.application.name=Client
6 eureka.client.service-url.defaultZone=http://localhost:8761/eureka
第五步:启动
1.Eureka注册中心-已启动、Config-Server-已启动
2.启动Config-Client
第六步:访问
http://localhost:8080/hi
四、说明
1.Http 服务有以下形式的资源:
(来自官网)--需细读理解
/{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties
2.配置git(官网说明)
Spring cloud 配置服务器从各种来源为远程客户端提供配置。 下面的示例从 git 仓库获取配置(必须提供) ,如下面的示例所示:
五、其他博客问题归纳
1.解决了默认为config配置端口8888覆盖问题
把application.properties改为bootstrap.properties 解决了默认为config配置端口8888覆盖问题
2.不加载config服务
client的pom配置中不能加spring-cloud-config-server
3.远程gitlab仓库的{application}-{profile}.properties名称为application-dev.properties。application改成别的会找不到配置文件