110_SpringCloudConfig 分布式配置
目录
分布式系统面临的--配置文件的问题
什么是SpringCloudConfig分布式配置
SpringCloudConfig分布式配置能干嘛
Git环境搭建
:::info
参考文档:https://www.yuque.com/yongqing-d9jyg/eptb8x/cx017a
:::
码云创建仓库
:::info
地址:git@gitee.com:wl3pbzhyq/springcloud-config.git
:::
克隆远程仓库到本地
Administrator@L87Y12K91TH8M2R MINGW64 /d/code
$ git clone git@gitee.com:wl3pbzhyq/springcloud-config.git
Cloning into 'springcloud-config'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (6/6), 13.90 KiB | 4.63 MiB/s, done.
Administrator@L87Y12K91TH8M2R MINGW64 /d/code
$
创建application.yml并推送到远程仓库
spring:
profiles:
active: dev
---
spring:
profiles: dev
application:
name: springcloud-config-dev
---
spring:
profiles: test
application:
name: springcloud-config-test
Administrator@L87Y12K91TH8M2R MINGW64 /d/code
$ cd springcloud-config/
Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git add .
Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: application.yml
Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git commit -m "提交application.yml"
[master 1461948] 提交application.yml
1 file changed, 15 insertions(+)
create mode 100644 application.yml
Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git push origin master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 375 bytes | 93.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.3]
To gitee.com:wl3pbzhyq/springcloud-config.git
42e1e0e..1461948 master -> master
Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$
SpringCloudConfig服务端
创建子模块
pom.xml
<?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">
<parent>
<artifactId>springcloud</artifactId>
<groupId>com.qing</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springcloud-config-server-3344</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</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>
<version>2.1.1.RELEASE</version>
</dependency>
</dependencies>
</project>
application.yml
server:
port: 3344
spring:
application:
name: springcloud-config-server
# 连接远程仓库
cloud:
config:
server:
git:
uri: https://gitee.com/wl3pbzhyq/springcloud-config.git # 注意:连接时选择https,而不是ssh
启动类
package com.qing.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication_3344 {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication_3344.class, args);
}
}
启动测试
:::info
访问远程仓库的文件application.yml,因为spring.profiles多环境配置,所以访问时使用:application-dev.yml或application-test.yml
:::
spring:
profiles:
active: dev
---
spring:
profiles: dev
application:
name: springcloud-config-dev
---
spring:
profiles: test
application:
name: springcloud-config-test
SpringCloudConfig客户端
创建config-server.yml并上传到远程仓库
spring:
profiles:
active: dev
---
server:
port: 8201
spring:
profiles: dev
application:
name: springcloud-provider-dept
# Eureka
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
---
server:
port: 8202
spring:
profiles: test
application:
name: springcloud-provider-dept
# Eureka
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git add .
Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git status
On branch master
Your branch is up to date with 'origin/master'.
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: config-client.yml
Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git commit -m "add config-client.yml"
[master c5b6fa7] add config-client.yml
1 file changed, 31 insertions(+)
create mode 100644 config-client.yml
Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$ git push origin master
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 443 bytes | 147.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.3]
To gitee.com:wl3pbzhyq/springcloud-config.git
1461948..c5b6fa7 master -> master
Administrator@L87Y12K91TH8M2R MINGW64 /d/code/springcloud-config (master)
$
创建客户端子模块
pom.xml
<?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">
<parent>
<artifactId>springcloud</artifactId>
<groupId>com.qing</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springcloud-config-client-3355</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
</dependencies>
</project>
bootstrap.yml
# 系统级别的配置
spring:
cloud:
config:
name: config-client # 需要从git上读取的资源的名称,不需要后缀
profile: dev
label: master
uri: http://localhost:3344
application.yml
# 用户级别的配置
spring:
application:
name: springcloud-config-cliennt-3355
Controller
package com.qing.springcloud.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 ConfigClientController {
@Value("${spring.application.name}")
private String applicationName;
@Value("${eureka.client.service-url.defaultZone}")
private String eurekaServer;
@Value("${server.port}")
private String port;
@RequestMapping("/config")
public String getConfig() {
return "applicationName:" + applicationName + " eurekaServer:" + eurekaServer + " port:" + port;
}
}
启动类
package com.qing.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ConfigClientApplication_3355 {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication_3355.class, args);
}
}
启动测试
:::info
启动Config服务端,启动Config客户端
:::
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~