Spring Cloud 学习 (六) Spring Cloud Config

在实际开发过程中,每个服务都有大量的配置文件,例如数据库的配置、日志输出级别的配置等,而往往这些配置在不同的环境中也是不一样的。随着服务数量的增加,配置文件的管理也是一件非常复杂的事

在微服务架构中,需要有统一管理配置文件的组件,例如 Spring Cloud 的 Spring Cloud Config、阿里的 Diamond、百度的 Disconf、携程的 Apollo 等

新建 spring-cloud-config-server

从本地读取配置

pom

<parent>
    <artifactId>spring-cloud-parent</artifactId>
    <groupId>com.karonda</groupId>
    <version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>spring-cloud-config-server</artifactId>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

application.yml

server:
  port: 8061

spring:
  application:
    name: config-server

  profiles:
    active: native # 从本地读取配置

  cloud:
    config:
      server:
        native:
          search-locations: classpath:/shared # 本地配置路径

新建配置文件 shared/eureka-client-dev.yml

version: 1.0.0

启动类

@EnableConfigServer // 开启 Config Server
@SpringBootApplication
public class ConfigServerApp {
    public static void main(String[] args){
        SpringApplication.run(ConfigServerApp.class, args);
    }
}

测试

启动 config-server

访问 http://localhost:8061/eureka-client/dev 可以看到配置

在客户端使用

在 eureka-client 测试

添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

添加配置 bootstrap.yml

spring:
  application:
    name: eureka-client

  cloud:
    config:
      uri: http://localhost:8061
      fail-fast: true

  profiles:
    active: dev

bootstrap.yml 优先于 application.yml

修改测试代码

@RestController
public class HiController {

    @Value("${server.port}")
    int port;

    @Value("${version}")
    String version;

    @GetMapping("/hi")
    public String home(@RequestParam String name){
        return "Hello " + name + ", from port: " + port + ", version: " + version;
    }
}

测试

  1. 启动 config-server
  2. 启动 eureka-server
  3. 启动 eureka-client

访问 http://localhost:8011/hi?name=Victor

从远程 Git 仓库读取配置

修改 application.xml

server:
  port: 8061

spring:
  application:
    name: config-server

#  profiles:
#    active: native # 从本地读取配置

  cloud:
    config:
      server:
#        native:
#          search-locations: classpath:/shared # 本地配置路径
        git:
          uri: https://github.com/VictorBu/spring-cloud-config-demo
          search-paths: repo # 搜索的文件夹地址
#          username: # 如果是私有仓库须配置
#          password: # 如果是私有仓库须配置
      label: master # git 仓库分支名

测试

参考上节

完整代码:GitHub

本人 C# 转 Java 的 newbie, 如有错误或不足欢迎指正,谢谢

?

原文地址:https://www.cnblogs.com/victorbu/p/11022900.html

时间: 2024-10-08 00:26:28

Spring Cloud 学习 (六) Spring Cloud Config的相关文章

Spring boot 学习六 spring 继承 mybatis (基于注解)

MyBatis提供了多个注解如:@InsertProvider,@UpdateProvider,@DeleteProvider和@SelectProvider,这些都是建立动态语言和让MyBatis执行这些语言使用基于注解的mybatis的方法,还是比较好用的. 一 首先是定义mapper, @ SelectProvider去声明类(CitySqlProvide)和方法名(findByState), public interface CityMapper { @SelectProvider(ty

Spring Cloud学习--配置中心(Config)

Spring Cloud学习--配置中心(Config) 一 Spring Cloud Config简介 二 编写 Config Server 三 编写Config Client 四 使用refresh端点手动刷新配置 五 Spring Config Server与Eurelka配合使用 六 Config Server的高可用 一. Spring Cloud Config简介 微服务要实现集中管理微服务配置.不同环境不同配置.运行期间也可动态调整.配置修改后可以自动更新的需求,Spring Cl

Spring框架学习02——Spring IOC 详解

1.Spring IOC的基本概念 IOC(Inverse of Control)反转控制的概念,就是将原本在程序中手动创建对象的控制权,交由Spring框架管理.当某个Java对象(调用者)需要调用另一个Java对象(被调用者)时,在传统编程模式下,调用者通常会采用“new 被调用者”的代码方式来创建对象.这种方式会增加调用者与被调用者之间的耦合性,不利于后期代码的升级与维护.当Spring框架出现后,对象的实例不再由调用者来创建,而是由Spring容器来创建.Spring容器会负责控制程序之

Spring Cloud 学习——7. Spring Cloud Config

1. 前言 本文介绍一个 通过 Spring Cloud Config + git 实现 Spring Cloud 项目的配置中心化的简单实践. 在一个分布式系统中,存在着各种微服务,而每一种服务可能都有几十甚至几百个实例在运行.虽然这些实例被分别部署在不同的机器上(或者网络节点中),但是他们需要一致对外提供服务,所以他们必须对所有的配置项都具有相同的配置值.而如果将这些配置项都保存在各个实例的本地上,那么一份配置就会存在几十上百个副本,这种情况下,一旦需要修改某一个配置值,这种运维上的难度可想

Spring Cloud 学习 (八) Spring Boot Admin

Spring Boot Admin 用于管理和监控一个或者多个 Spring Boot 程序 新建 spring-boot-admin-server pom <parent> <artifactId>spring-cloud-parent</artifactId> <groupId>com.karonda</groupId> <version>1.0.0</version> </parent> <mode

Spring框架学习六:Spring对JDBC的支持

JdbcTemplate简介 为了使JDBC更加易于使用,Spring 在 JDBC API 上定义了一个抽象层,以此建立一个 JDBC 存取框架 作为 Spring JDBC 框架的核心,JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法.每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务.通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取工作量降到最低. #添加c3p0数据库连接池 jdbc.user=root jdbc.password=000 jdbc.jd

spring学习 六 spring与mybatis整合

在mybatis学习中有两种配置文件 :全局配置文件,映射配置文件.mybatis和spring整合,其实就是把mybatis中的全局配置文件的配置内容都变成一个spring容器的一个bean,让spring容器进行托管.因此整合过程就是把mybatis全局配置文件的内容整合到spring的配置文件中 (一)mybatis全局配置文件 : 根标签是<configuration>, 子标签包括: <typeAliases>配置别名, <environments> 配置数据

Spring的学习____X. spring 和mybatis的整合

(本案例是idea下的maven工程) 案例一:mybatis的回顾: 整体流程的回顾: mybatis: 1.实体类(User)---->属性名和数据库中字段名相对应 2.接口(UserMapper----->对数据库的增删改查的业务操作的定义 3.接口的配置文件(UserMapper.xml)----> mappers的namespace属性要写对应的接口: 再写UserMapper接口中增删改查的SQL语句 4.mybatis 的核心配置文件(mybatis-config.xml)

Spring+Maven学习实验- Spring AOP面向切面编程(二)

在 Spring AOP 中,有 3 个常用的概念,Advices . Pointcut . Advisor ,解释如下: Advices :表示一个 method 执行前或执行后的动作. Pointcut :表示根据 method 的名字或者正则表达式去拦截一个 method . Advisor : Advice 和 Pointcut 组成的独立的单元,并且能够传给 proxy factory 对象. 我们可以用名字匹配法和正则表达式匹配法去匹配要拦截的 method . 1 Pointcut