Bootstrap

Java之 Spring Cloud 微服务的 SpringCloud Config 配置中心(第四个阶段)【二】【SpringBoot项目实现商品服务器端调用

(3)编写启动类

在这里插入图片描述

在这里插入图片描述

@SpringBootApplication

@EnableConfigServer

public class ConfigServerApplication {

public static void main(String[] args) {

SpringApplication.run(ConfigServerApplication.class,args);

}

}

  • @EnableConfigServer : 通过此注解开启注册中心服务端功能

(4)设置配置文件

在这之前复制一下Git请求的服务器的地址

在这里插入图片描述

在这里插入图片描述

server:

port: 10001 #服务端口

spring:

application:

name: config-server #指定服务名

cloud:

config:

server:

git:

uri: https://gitee.com/itbluebox/config-repostory.git

(5)启动服务进行测试

在这里插入图片描述

运行成功

在这里插入图片描述

访问测试:http://localhost:10001/product-dev.yml

在这里插入图片描述

3、修改客户端程序


(1)修改product_service

1)引入依赖

在这里插入图片描述

org.springframework.cloud

spring-cloud-starter-config

2)删除application.yml

springboot的应用配置文件,需要通过Config-server获取,这里不再需要。

在这里插入图片描述

spring:

cloud:

config:

name: product #应用名称需要对应Git中配置文件的名称的前半部分

profile: dev #开发环境

label: master #git当中的分支

uri: http://localhost:10001 #config-server的请求地址

3)运行测试

在这里插入图片描述

访问:http://localhost:9001/product/1

在这里插入图片描述

访问:http://localhost:9001/product/test

在这里插入图片描述

4)修改配置文件然后在运行测试

将dev修改为pro

在这里插入图片描述

spring:

cloud:

config:

name: product #应用名称需要对应Git中配置文件的名称的前半部分

profile: pro #开发环境

label: master #git当中的分支

uri: http://localhost:10001 #config-server的请求地址

重新启动运行

在这里插入图片描述

请求的端口改变了

在这里插入图片描述

访问:http://localhost:9002/product/1

在这里插入图片描述

4、手动刷新


(1)问题解析

我们已经在客户端取到了配置中心的值,

修改Gitee上的值

在这里插入图片描述

在这里插入图片描述

修改内容

在这里插入图片描述

在这里插入图片描述

访问:http://localhost:9002/product/test

在这里插入图片描述

但当我们修改Gitee上面的值时,

服务端(Config Server)能实时获取最新的值,但客户端(Config Client)读的是缓存,无法实时获取最新值。

SpringCloud已经为我们解决了这个问题,那就是客户端使用post去触发refresh,获取最新数据,需要依赖spring-boot-starter-actuator

(2)引入依赖

在这里插入图片描述

org.springframework.boot

spring-boot-starter-actuator

(3)在ProductController类加上@RefreshScope

在这里插入图片描述

@RestController

@RequestMapping(“/product”)

@RefreshScope //代表的是开启动态刷新

public class ProductController {

@Autowired

private ProductService productService;

@Value(“${server.port}”)

private String port;

@Value(“${spring.cloud.client.ip-address}”)

private String ip;

@Value(value = “${name}”)

private String name;

@RequestMapping(value = “/{id}”, method = RequestMethod.GET)

public Product findById(@PathVariable Long id) {

Product product = productService.findByID(i

;