springcloud使用consul作为配置中心

Spring Cloud 中文手册: https://springcloud.cc/spring-cloud-consul.html

也就是说在我们使用consul config时最好在consul 建立相应的目录结构 适用于某一个服务的目录结构以及适用于所有的服务的目录结构

本列consul web UI :springboot为我们提供了三种环境dev:默认开发环境  test:测试环境  prod:生产环境

PS:

1.每次当我们修改consul上面的配置信息的时候,会向我们的代码发送一个/refresh请求刷新我们的工程,通过使我们的取值动态的刷新,不需要重启项目, 但是当我们使用@Value进行取值的时候,虽然可会取到值也会刷新项目但是不会更改我们的取值,还是取到项目启动时候配置在consul上面的值,实时刷新。

2.当我们在全局的application的文件中配置跟某一个服务列如:server-sms中配置相同的属性时, server-sms这个项目启动的时候默认是先去找自己目录下面的配置,再去找全局的配置,如果自己目录下

实战:

pom.xml文件配置:

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

bootstarp.xml配置:(如果配置在application里面,他不会生效,bootstrap.yml先比applciation.properties加载)

spring:
 cloud:
  consul:
   host: 100.1.00.0
   #host: 00.0.100.200
   port: 8500
   enabled: true
   config:
    enabled: true  #默认是true --
    format: YAML  # 表示consul上面文件的格式 有四种 YAML PROPERTIES KEY-VALUE FILES
    data-key: configuration  #表示consul上面的KEY值(或者说文件的名字) 默认是data

FORMAT举例说明两种(本列中使用的是server-sms项目的YAML):

PROPERTIES:

YAML:

取值方式:

1.通过EnabledConfigurationProperties注解取值(启动项目后修改consul上的属性值,项目中的属性值立即发生变化):

对应的bean:

//name要与consul上面的name写的一样,consul上面可以写多级目录 例如: userInfo: name: LiaoWenWen
//对应的写ConfigurationProperties(prefix="userInfo ") 如果项目使用中配置化东西比较多 建议采用这种形式  

@ConfigurationProperties()
public class UserInfo { 

  private String name;//要与consul上面一致 

  public String getName() {
    return name;
  } 

  public void setName(String name) {
    this.name = name;
  }

controller代码取值:

@Autowired
private UserInfo userInfo; 

@ApiOperation(value="获取consulInfo", notes="获取consulInfo")
public String getConsulInfo() {
  return userInfo.getName();
} 

项目启动类:

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

2.通过Value注解取值(项目启动后修改consul上的值,项目中的值不发生变化,只有再次启动项目获取的值才是修改后的值,发送/refresh请求无效)

@Value
private String name; 

@ApiOperation(value="获取consulInfo", notes="获取consulInfo")
public String getConsulInfo(){
  return name;
} 

3.static 取值

@Component
@Configuration
public class ConsulKV { 

  public static String smsUrl; 

  public static String username; 

  public static String password; 

  @Value("${ssbp.smsUrl}")
  public void setSmsUrl(String smsUrl) {
    ConsulKV.smsUrl = smsUrl;
  } 

  @Value("${ccb.job.login.username}")
  public void setUsername(String username) {
    ConsulKV.username = username;
  } 

  @Value("${ccb.job.login.password}")
  public void setPassword(String password) {
    ConsulKV.password = password;
  } 

示例代码地址: https://github.com/LiaoWenn/spring-cloud-consul-config

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Spring Cloud Consul 实现服务注册和发现

    Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具,它为基于 JVM 的云应用开发中涉及的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策竞选.分布式会话和集群状态管理等操作提供了一种简单的开发方式.通过 Spring Boot 风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂.易部署和易维护的分布式系统开发工具包. Spring Cloud 包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Sprin

  • 详解使用Spring Cloud Consul实现服务的注册和发现

    首先安装consul环境,参照之前的文章:https://www.jb51.net/article/141789.htm 项目规划,2个服务端,1个客户端 首先来看服务端, 一:服务端1: 项目依赖 <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clou

  • springcloud使用consul作为配置中心

    Spring Cloud 中文手册: https://springcloud.cc/spring-cloud-consul.html 也就是说在我们使用consul config时最好在consul 建立相应的目录结构 适用于某一个服务的目录结构以及适用于所有的服务的目录结构 本列consul web UI :springboot为我们提供了三种环境dev:默认开发环境  test:测试环境  prod:生产环境 PS: 1.每次当我们修改consul上面的配置信息的时候,会向我们的代码发送一个

  • 详解SpringCloud使用Consul做注册中心

    简介: Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发. Consul 支持健康检查,并允许 HTTP 和 DNS 协议调用 API 存储键值对. 命令行超级好用的虚拟机管理软件 vgrant 也是 HashiCorp 公司开发的产品. 一致性协议采用 Raft 算法,用来保证服务的高可用. 使用 GOSSIP 协议管理成员和广播消息, 并且支持 , Consul 提供了微服务中服务注册发现注册,微服务中的分布式配置中心,可以单独使用,也可

  • SpringCloud使用Zookeeper作为配置中心的示例

    在上一篇文章中介绍了Zookeeper作为注册中心使用,在这篇文章中将介绍Zookeeper作为配置中心的使用,废话不多说,直接上代码. 相关依赖 <?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-ins

  • SpringCloud安装Nacos完成配置中心

    目录 1. Nacos介绍 2. docker安装Nacos 2.1 docker-compose.yaml 2.2 启动后访问控制台 3.Springboot集成Nacos 3.1 pom依赖 3.2 yaml配置 3.3 测试配置动态化 3.4 测试日志 eureka注册中心 1. Nacos介绍 官网说明:Nacos 致力于帮助您发现.配置和管理微服务.Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现.服务配置.服务元数据及流量管理. 2. docker安装Nacos 基

  • SpringCloud用Zookeeper搭建配置中心的方法

    本文介绍了SpringCloud +Zookeeper完成配置中心,分享给大家,具有如下: 使用场景 项目配置更改不需要打包,重启 提供配置文件的可视化界面 和springcloud快速整合 为什么使用zookeeper Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储, Zookeeper 作用主要是用来维护和监控存储的数据的状态变化,通过监控这些数据状态的变化,从而达到基于数据的集群管理. 怎么使

  • SpringCloud消息总线Bus配置中心实现过程解析

    介绍和使用场景 1)什么是消息 一个事件,需要广播或者单独传递给某个接口 2)为什么使用这个 配置更新了,但是其他系统不知道是否更新 SpringCloud配置中心可参考: https://www.jb51.net/article/182888.htm 1.安装RabbitMQ 下载地址: http://erlang.org/download/ Erlang版本:Erlang OTP 21:10.0.1 下载地址: https://www.rabbitmq.com/install-windows

  • SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码

    一.简介 当要将配置中心部署到生产环境中时,与服务注册中心一样,我们也希望它是一个高可用的应用.Spring Cloud Config实现服务端的高可用非常简单,主要有以下两种方式. 传统模式:不需要为这些服务端做任何额外的配置,只需要遵守一个配置规则,将所有的Config Server都指向同一个Git仓库,这样所有的配置内容就通过统一的共享文件系统来维护.而客户端在指定Config Server位置时,只需要配置Config Server上层的负载均衡设备地址即可, 就如下图所示的结构. 服

  • 详解SpringCloud Config配置中心

    一.创建Config配置中心项目 1.添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> 2.启动类,需要添加@EnableConfigServer import org.springframework.boot.SpringApp

  • 详解SpringCloud mysql实现配置中心

    mysql实现配置中心 本公司配置数据的管理是通过mysql进行配置管理,因为已经搭建好了,所以自己动手重新搭建一遍,熟悉整个流程.有关项目源码后期会补上github地址 微服务要实现集中管理微服务配置. 不同环境不同配置 . 运行期间也可动态调整 . 配置修改后可以自动更新的需求 ,Spring Cloud Config同时满足了以上要求. 一.项目搭建 本次主要用三个微服务 (1)Eureka-server: 7001 注册中心 (2)config-server : 5001 配置中心 (3

  • SpringCloud配置中心Config过程解析

    1.什么是配置中心 统一管理配置,怏速切换各个环境的配置 相关产品: 百度的 discont https://github.com/knightliao/disconf 阿里的diamand https://github.com/takeseem/diamond springcloud的configs-server: http://cloud.spring.io/spring-cloud-config/ 2.添加依赖 <dependency> <groupId>org.spring

随机推荐