SpringCloud Config分布式配置中心使用教程介绍

作者:幽默涵养miss 时间:2023-09-15 00:56:06 

一、简介

Spring Cloud Config为分布式系统中的配置提供服务器端和客户端支持。可以集中管理所有环境中应用程序的配置文件。其服务器端存储的默认实现使用GIT。

优势

  • 提供服务端和客户端支持(spring cloud config server和spring cloud config client)

  • 集中式管理分布式环境中的配置信息(所有配置文件统一放在了GIT仓库中)

  • 基于Spring环境提供配置管理,与Spring系列框架无缝结合

  • 可用于任何语言开发环境,基于Http协议。

  • 默认基于GIT仓库实现版本控制。

二、使用

1.搭建配置文件仓库

2.搭建Eureka-Server注册中心服务器

3.搭建Config-Server分布式配置中心服务器

(1)导入依赖

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.3.12.RELEASE</version>
</parent>
<dependencyManagement>
   <dependencies>
       <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-dependencies</artifactId>
           <version>Hoxton.SR12</version>
           <type>pom</type>
           <scope>import</scope>
       </dependency>
   </dependencies>
</dependencyManagement>
<dependencies>
   <!-- spring cloud系列技术中,唯一命名特殊的启动器依赖。 -->
   <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>

(2)编写配置文件

server:
  port: 8888

# 增加分布式配置中心服务端配置。连接什么GIT仓库
spring:
  application:
    name: config-server
  cloud: # spring cloud常用配置前置
    config: # 分布式配置中心配置前置
      server: # 服务端配置
        git: # git文件仓库配置
          uri: https://gitee.com/bjsxt_test/config.git # git仓库具体地址
          #username: bjsxt_test # 私有仓库必须配置用户名和密码。
          #password: 123456789 # 公开仓库可以省略用户名和密码配置。

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/

(3)编写启动类

/**
* EnableConfigServer - 开启Spring Cloud Config Server的注解。
*  提供分布式配置中心服务端功能。
*/
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApp {
   public static void main(String[] args) {
       SpringApplication.run(ConfigServerApp.class, args);
   }
}

4.搭建Config Client

Config Client对于Spring Cloud Config是客户端,对于Eureka来说可以是Application Server 也可以是Application Client。

(1)导入依赖

<dependencies>
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
   </dependency>
   <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
   </dependency>
   <!-- spring cloud config分布式配置中心客户端依赖 -->
   <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-config</artifactId>
   </dependency>
</dependencies>

(2)编写配置文件

# 新配置文件 bootstrap.yml | properties。是spring cloud config技术支持的新配置文件。
# 配置文件由config分布式配置中心客户端读取,并请求分布式配置中心服务端,查询获取配置文件之后,Spring Boot根据配置文件,初始化环境

spring:

  application:

    name: Config-Client
  cloud:
    config: # spring cloud config 客户端配置
      uri: http://localhost:8888 # 分布式配置中心服务端地址。 默认http://localhost:8888
      name: bjsxt # 要读取的配置文件名,默认是spring.application.name的配置值,如果没有配置,默认application
      profile: default # 要读取的配置文件环境是什么,默认default
      label: master # 要读取的配置文件所在分支名称。默认null。从主干分支获取文件。

(3)服务接口

public interface ConfigClientService {
   String test();
}

(4)服务实现

@Service
public class ConfigClientServiceImpl implements ConfigClientService {
   @Value("${my.content}")
   private String content;
   @Override
   public String test() {
       System.out.println("content = " + content);
       return content;
   }
}

(5)编写控制器

@RestController
public class ConfigClientController {
   @Autowired
   private ConfigClientService configClientService;
   @RequestMapping("/test")
   public String test(){
       return configClientService.test();
   }
}

(6)编写启动类

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

三、热刷新

(1)导入依赖(和优雅关闭的依赖一样)

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

(2)修改配置文件

management:
  endpoints:
    web:
      exposure:
        include: refresh,info,health

(3)修改服务实现(在类上添加@RefreshScope注解)

@Service
@RefreshScope
public class ConfigClientServiceImpl implements ConfigClientService {
   @Value("${my.content}")
   private String content;
   @Override
   public String test() {
       System.out.println("content = " + content);
       return content;
   }
}

(4)测试热刷新

http://localhost:8080/actuator/refresh

四、Spring Cloud Bus(消息总线)

(1)导入依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 总线技术中的amqp相关依赖。 -->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

(2)修改配置文件

spring:
  rabbitmq:
    host: 192.168.91.128
    username: bjsxt
    password: bjsxt
management:
  endpoints:
    enabled-by-default: true
    web:
      exposure:
        include: bus-refresh,info,health

(3)测试

http://localhost:8080/actuator/bus-refresh

来源:https://blog.csdn.net/weixin_53455615/article/details/128175078

标签:Springcloud,Config,分布式,配置中心
0
投稿

猜你喜欢

  • Java使用easyExcel导出excel数据案例

    2022-02-21 19:39:27
  • 推荐史上最全的IDEA好用插件

    2023-02-22 21:35:04
  • C#实现对二维数组排序的方法

    2023-06-19 09:09:08
  • Kotlin object的几种用法示例详解

    2022-07-02 18:03:53
  • C#委托与事件初探

    2021-06-07 00:09:42
  • TableLayout(表格布局)基础知识点详解

    2023-05-30 01:12:42
  • spring-boot @Component和@Bean的区别详解

    2023-06-28 16:10:36
  • MybatisPlus使用代码生成器遇到的小问题(推荐)

    2021-07-17 09:15:17
  • c# 匿名方法的小例子

    2023-06-05 01:22:45
  • Spring Cloud gateway 网关如何拦截Post请求日志

    2022-06-19 03:19:46
  • java多线程抓取铃声多多官网的铃声数据

    2023-12-18 23:20:05
  • Java class文件格式之方法_动力节点Java学院整理

    2021-07-15 04:14:23
  • Scala可变参数列表,命名参数和参数缺省详解

    2022-09-26 21:00:49
  • java线程池合理设置最大线程数和核心线程数方式

    2021-06-19 22:02:31
  • Java程序员面试中的多线程问题总结

    2021-12-12 07:48:33
  • IDEA2020.1使用LeetCode插件运行并调试本地样例的方法详解

    2022-02-28 09:44:47
  • c#读写excel文件使用示例

    2021-08-27 03:02:53
  • C# Socket编程实现简单的局域网聊天器的示例代码

    2022-10-01 19:45:45
  • android实现简单仪表盘效果

    2023-05-31 22:37:39
  • Java基于链表实现栈的方法详解

    2022-07-02 11:39:20
  • asp之家 软件编程 m.aspxhome.com