目录
2. Spring Cloud Config 实践 (入门简单级)
1.Spring Cloud Config 简介
架构图如下所示:
2. Spring Cloud Config 实践 (入门简单级)
2.1 配置中心服务端 (JDK11 ,IDEA)
2.1.1 创建项目 (Eureka基础之上)
File -> new -> Module
2.1.2 依赖管理 (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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.12</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.csh</groupId> <artifactId>Config-Bill-cloud</artifactId> <version>0.0.1-SNAPSHOT</version> <name>Config-Bill-cloud</name> <description>Demo project for Spring Boot</description> <properties> <java.version>11</java.version> <spring-cloud.version>2020.0.4</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-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.0.3</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </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> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.4.12</version> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>
2.1.3 启动器
@SpringBootApplication @EnableConfigServer public class CloudCongfigApplication { public static void main(String[] args) { SpringApplication.run(CloudCongfigApplication.class, args); } }
2.1.4 配置文件
application.yml代码如下。
server: #端口号9006 port: 9006 spring: application: #名字 name: cloud-config cloud: config: server: #访问git git: # 配置⽂件所在的git仓库 uri: https://gitee.com/chan163/bill-cloud-config.git #repo 目录 search-paths: repo #master分支 default-label: master #配置 eureka eureka: client: service-url: defaultZone: http://127.0.0.1:9004/eureka
2.1.5 配置仓库
key1 : v1key2 : v2key3 : v3
2.1.6 启动并测试
首先启动 EurekaServerApplication
然后再启动 CloudCongfigApplication
![](https://i-blog.csdnimg.cn/blog_migrate/947f29692dd239e4f881bfbd4157f8a9.png)
3. 配置中⼼客户端
3.1 添加依赖(在⽀付微服务⼯程中)
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-config</artifactId></dependency>
3.2 配置⽂件
server: port: 9000 spring: application: name: cloud-payment cloud: config: uri: http://localhost:9006 profile: default label: master config: import: optional:configserver:http://localhost:9006 eureka: client: service-url: defaultZone: http://127.0.0.1:9004/eureka/ register-with-eureka: true fetch-registry: true
说明:
- spring.config.import=optional:configserver:http://localhost:9006,指定Spring Boot项⽬从
- Config Server导⼊配置
- spring.cloud.config.url:Config Server地址,默认localhost:8888
- spring.cloud.config.profile:为git配置⽂件的后缀
- spring.cloud.config.label:为访问git的分⽀。
3.3 git仓库下文件覆盖
application.yml
key1: 1
key2: 2
key3: 3
cloud-payment-default.yml
key3: 666
cloud-payment
内容为空
3.4 改造PaymentController
@RestController @RequestMapping("/payment") @Slf4j public class PaymentController { @Value("${key1}") //从配置文件中读取key1 key2 key 3 private String key1; @Value("${key2}") private String key2; @Value("${key3}") private String key3; @GetMapping("/{id}") public ResponseEntity<Payment> payment(@PathVariable("id") Integer id) { log.info("key1 : {}, key2 : {}, key3 : {}", key1, key2 , key3); //打印到控制台 Payment payment = new Payment(id, "⽀付成功"); return ResponseEntity.ok(payment); } }
3.5 启动并测试
依次启动
EurekaServerApplication [devtools] :9004/
CloudCongfigApplication [devtools] :9006/
CloudPaymentApplication [devtools] :9000/
然后访问 http://localhost:9000/payment/123 观察控制台 如果如下图所示
证明成功配置成功
反思:当我们在git 仓库修改值时 值仍为原来的值 , 仍为旧的配置.这时候继续要我们下面所学的内容了
4.配置⾃动刷新(重点)
4.1 启动Rabbitmq
这个软件需要我们事先安装,具体如下链接
4.2 配置中心服务端
4.2.1 添加依赖
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>
4.2.2 配置⽂件
server: #端口号8888 port: 8888 spring: rabbitmq: #虚拟机地址 host: 192.168.43.133 #默认端口号 port: 5672 #rabbitmq账号 username: admin #rabbitmq密码 password: 123456 application: #名字 name: cloud-config cloud: config: server: #访问git git: uri: https://gitee.com/chan163/bill-cloud-config.git #repo 目录 search-paths: repo #master分支 default-label: master #配置 eureka eureka: client: service-url: defaultZone: http://127.0.0.1:9004/eureka management: endpoints: web: exposure: include: bus-refresh endpoint: busrefresh: enabled: true
4.3 配置中心客户端
4.3.1 添加依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bus-amqp</artifactId> </dependency>
4.3.2 配置文件
server: port: 9000 spring: application: name: cloud-payment rabbitmq: #虚拟机地址 host: 192.168.43.133 #默认端口号 port: 5672 #rabbitmq账号 username: admin #rabbitmq密码 password: 123456 cloud: config: uri: http://localhost:8888 profile: default label: master config: import: optional:configserver:http://localhost:8888 eureka: client: service-url: defaultZone: http://127.0.0.1:9004/eureka/ register-with-eureka: true fetch-registry: true
4.3.3 PaymentController
@RestController @RequestMapping("/payment") @Slf4j @RefreshScope public class PaymentController { @Value("${key1}") //从配置文件中读取key1 key2 key 3 private String key1; @Value("${key2}") private String key2; @Value("${key3}") private String key3; @GetMapping("/{id}") public ResponseEntity<Payment> payment(@PathVariable("id") Integer id) { log.info("key1 : {}, key2 : {}, key3 : {}", key1, key2 , key3); //打印到控制台 Payment payment = new Payment(id, "⽀付成功"); return ResponseEntity.ok(payment); } }
4.3.4 启动器
config启动器
@SpringBootApplication @EnableEurekaClient @EnableConfigServer public class CloudCongfigApplication { public static void main(String[] args) { SpringApplication.run(CloudCongfigApplication.class, args); } }
cloud-payment启动器
@SpringBootApplication @EnableDiscoveryClient public class CloudPaymentApplication { public static void main(String[] args) { SpringApplication.run(CloudPaymentApplication.class, args); } }
4.4 启动并测试(工具Postman)
依次启动
EurekaServerApplication [devtools] :9004/
CloudCongfigApplication [devtools] :8888/
CloudPaymentApplication [devtools] :9000/
原配置文件
调用支付微服务 观察控制台
访问 localhost:9000/payment/12355
修改一下配置文件
发送POST请求
localhost:9006/actuator/busrefresh
然后再次调用支付微服务
访问 localhost:9000/payment/12355
配置文件成功刷新说明我们的项目配置完毕.