【踩坑专栏】配置文件加载顺序问题

准备的测试配置文件为一个yml,里面包括了eureka注册url,还有 一个properties,里面只有端口和项目名称。
yml配置如下:

spring:
  application:
    name: eureka-client

server:
  port: 30001

eureka:
  client:
    serviceUrl:
      #注册中心地址
#      defaultZone: http://localhost:20000/eureka/
      defaultZone: http://peer2:20000/eureka/, http://peer1:20001/eureka/
  instance:
    #每隔5秒钟就要向注册中心发送一条续约指令
    lease-renewal-interval-in-seconds: 5
    #如果30秒内,依然没有收到续约请求,判定服务过期
    #(服务自保开启时服务剔除会不生效,因为服务自保会确保有客户端连接,哪怕是down掉的)
    lease-expiration-duration-in-seconds: 30

properties配置如下:

spring.application.name=eureka-client

server.port=30002

在启动后,会发现项目一直在向eureka注册(由于没有启动eureka-server,一直失败)。而向项目发送请求去读取并返回端口号时,返回的是properties中的端口号。
代码如下:

@RestController
@Slf4j
public class Controller {

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

    @GetMapping("/sayHi")
    public String sayHi(){
        return "This is " + port;
    }
}

截图如下:
在这里插入图片描述

经测试,加载的顺序为yml、properties。在其他文章中,有提到顺序为yml>yaml>properties【1】。先加载的会被后加载的覆盖。

我的理解是,由于yml先加载,在启动时会使用这个配置文件。而Properties后加载,在发送请求、项目读取端口号时,Properties已将yml覆盖,读取的是propertis中的配置(端口)。

参考文献
【1】SpringBoot中 properties,yaml,yml的优先级

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值