consul 日志配置_Consul :使用consul作为配置中心

本文档介绍了如何将Consul用作Spring Boot应用的配置中心,详细阐述了配置Spring Boot 2.1.1版本应用所需依赖、bootstrap.yml配置、Consul数据中心的配置结构,以及如何通过@ConfigurationProperties和@Value注入配置。同时,文中还提到在配置变更时,使用@RefreshScope实现动态刷新@Value注解的值。
摘要由CSDN通过智能技术生成

Spring boot 版本2.1.1

依赖:

org.springframework.cloud

spring-cloud-dependencies

Greenwich.RELEASE

pom

import

org.springframework.cloud

spring-cloud-starter-consul-all

org.springframework.boot

spring-boot-configuration-processor

true

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

这样也太不友好了,我就要使用@value,难道没有办法解决?

在使用@Value 的class  上增加注解 @RefreshScope

@RestController

@RefreshScope

public class Test{

}

再次修改consul 配置中心 ,我们就看到

@Value("${company.name}") 的值也刷新了。

有人说还是 无法刷新

请检查 Applacation 启动类 是否加了注解  @EnableScheduling

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值