springcloud中config组件

关系图如下:

在这里插入图片描述

config组件执行流程

1.启动config组件服务器端(如图cloudconfig-service),自动将码云的配置文件下拉到本地仓库
2.在config客户端配置config服务器的地址,将config客户端的配置文件也就可以使用.
3.1用户发送请求到config客户端
3.2config客户端从本地仓库中获取数据
3.3config服务器从码云上获取配置文件信息到本地仓库,数据以此返回回去

1.config服务器端

1.1导入依赖:
<!--项目cloud-config-server-->
<dependencies>
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
1.2配置文件
server:
  port: 40000
spring:
  application:
    name: 24Configserver
  cloud:
    config:
      server:
        git:
          uri: 仓库地址 #新建git仓库地址
          username: 码云账号@qq.com
          password: 密码
package com.bigdata.microservice.cloud.config.server;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer //开启 configserver
public class ConfigServerStartApp {

public static void main (String[] args){ 
SpringApplication.run(ConfigServerStartApp.class,args);
}
}

2.config客户端

2.1导入依赖:
<!--项目cloud-config-client-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
</dependencies>
2.2 配置文件

因为application.yml是项目启动后在初始化数据的时候加载的,但是我们在初始化数据的时候必须 已经从 server 中获取数据,所以我们必须在初始化之前去加载数据, springboot 提供了一个bootstrap.yml 用于在初始化之前进行解析,其加载顺序会比application.yml早,所以我们可以将部分配置放到这里面来

bootstrap.yml

spring:
  cloud:
    config:
      uri: http://localhost:40000 #配置 configserver 的地址,不是仓库地址
  application:
    name: testconfig #我们的 config client 查找文件的方式是 根据应用的名字加上active的值来匹配的,比如此处代表要找的文件叫testconfig-pro.yml
  profiles:
    active: pro

application.ym文件

server: 
  port: 41000
@SpringBootApplication
public class ConfigClientStartApp {
public static void main (String[] args){ SpringApplication.run(ConfigClientStartApp.class,args);
}
}

3.config注册中心(eureka)

3.1导入eureka依赖
    <!--cloud-config-server-eureka-->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
3.2配置文件
erver:
  port: 41000
spring:
  application:
    name: 31cloud-config-server-eureka
  cloud:
    config:
      server:
        git: #配置configserver从什么地方加载配置文件
          uri: https://gitee.com/danny2005/{application}
eureka: #注册中心的地址
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka #curl风格
3.3启动类
package com.bigdata;
@SpringBootApplication @EnableEurekaClient //开启服务发现@EnableConfigServer //开启配置 server public class ConfigServerStartApp {
public static void main (String[] args){ 
SpringApplication.run(ConfigServerStartApp.class,args);
}
}

4.config组件整合eureka

4.1导入依赖

 <!--cloud-config-client-eureka-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

4.2配置文件

#这个文件是启动时候就加载,优先级高于application.yml
spring:
  application:
    name: simple #这个就是我们的名字, 当前值和下面的 profile 组合起来代表我们的访问路径,比如此处访问的就是 simple-dev.yml
  cloud:
    config: #配置configserver的地址
      profile: dev
      label: master
      discovery: ##服务发现
        enabled: true #允许服务发现
        service-id: 31cloud-config-server-eureka #配置configserver在eureka上面的名字
eureka: #注册中心的地址,必须配置在这个文件里面
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka #curl风格

4.3启动类

package com.bigdata;
@SpringBootApplication
@EnableEurekaClient
public class ConfigClientStartApp {
public static void main (String[] args){ 
SpringApplication.run(ConfigClientStartApp.class,args);
}
}

controller

package com.bigdata.controller;
@RestController
public class ClientController {
@Value("${spring.aaaa}") private String aaaa;

@GetMapping("/aaa") public String getAaaa() {
return aaaa;
}
}

5.手动刷新

5.1添加依赖
<!--cloud-config-client-eureka-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
5.2编写配置文件
management:
  endpoints:
    web:
      exposure:
        include: '*' #允许访问所有管理地址,不然无法访问刷新地址,如果指向访问某个管理地址,写具体地址就行,比如'/actuator/refresh'
5.3添加注解@RefreshScope
@RestController
@RefreshScope//当前类找到某些内容发生变化的时候,会刷新属性,(必须是RefreshScope知道属性发生变化) public class ClientController {
@Value("${spring.aaaa}") private String aaaa;

@GetMapping("/aaa") public String getAaaa() {
return aaaa;
}
}

这时候我们通过Postman发出 POST 请求访问我们的 client 下面的 http://localhost:19245/actuator/refresh 然后我们再回来刷新 controller 页面,发现数据变化为最新的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值