Consul :使用consul作为配置中心

本文详细介绍了如何在Spring Boot项目中整合Consul作为配置中心,包括依赖配置、YAML配置、代码实现及动态刷新配置的方法。通过示例展示了如何从Consul读取配置并映射到Java类中,以及不同方式获取配置值的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring boot 版本2.1.1

依赖:

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

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

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

bootstrap.yml配置:

spring:
  cloud:
    consul:
      host: ip
      port: 8500
      discovery:
        hostname: ${spring.cloud.client.ip-address}
        healthCheckPath: /actuator/health
        healthCheckInterval: 15s     #默认是10s 可设置ps:15s or 1m
        ip-address: true
        instanceId: ${spring.application.name}:${spring.cloud.client.ipaddress}:${server.port}
        tags: ${spring.profiles.active}
      config:
        prefix: config
        enabled: true     #默认是true --
        format: YAML    # 表示consul上面文件的格式 有四种 YAML PROPERTIES KEY-VALUE FILES
        defaultContext: demo-server    # 表示配置文件对应的应用名称
        data-key: data    #表示consul上面的KEY值(或者说文件的名字) 默认是data
        profileSeparator: '-'

不需要注册或发现服务 discovery 相关配置可以不需要

 

consul  数据中心配置

config/demo-server-dev/data

data文件内容

company: 
  name: kaiyuanzhongguo

java 代码

@Component
@ConfigurationProperties(prefix = "company")
public class Config {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
     
     
}
@RestController
@RequestMapping("consul")
public class Test {
    @Value("${company.name}")
    private String companyName;
     
    @Autowired
    private Config Config;
     
    @GetMapping("getConfig")
    public String getConfig(){
        return companyName;
    }
     
    @GetMapping("getConfig1")
    public String getConfig1(){
        return Config.getName();
    }
     
     
}

访问url:  consul/getConfig   result:  kaiyuanzhongguo

访问url:  consul/getConfig1   result:  kaiyuanzhongguo

注意:如果使用@Value 获取值  在consul 数据中心 数据变更后 项目不重启的情况下 @Value 值不会变

data文件修改

company: 
  name: kaiyuanzhongguo123456

此时在项目不重启的情况下

访问url:  consul/getConfig    result:  kaiyuanzhongguo

访问url:  consul/getConfig1   result:  kaiyuanzhongguo123456

转载于:https://my.oschina.net/u/1262235/blog/3035425

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值