zoukankan      html  css  js  c++  java
  • 关于使用application.yml配置文件启动时 部分配置不生效 启动失败的问题

    问题场景:在新建一个Spring Boot Module(Spring Boot 版本2.1.5-RELEASE)时,将application.properties文件修改为application.yml,然后进行相关配置。
    其中配置了eureka.client.service-url.defaultZone:localhost:8095/eureka/ 然后启动。但是在启动时 连接的defaultZone 却是 eureka:8095/eureka/ 。
    然后新建了一个配置文件application-local.yml 使用相同的配置,然后切换active到local,再启动,发现可以正常的;连接到localhost:8095/eureka/。
    通过跟踪SpringBoot 的启动,最后发现在为EurekaClientConfigBean 绑定配置文件的属性时,application.yml中的配置被application.properties中的配置覆盖了

     

     

     

     可以看到,当存在多个配置文件时,会执行循环,当查找到第一条有效配置时就退出循环,而当使用application.yml文件时

    而正常的source结构应该时这样的,所以问题应该是出在,在初始化Binder的context时,多加进了一个application.properties。

     

    通过该代码可得知,properties的加载器是在yaml加载器之前的,所以如果在同目录下,会先加载application.propertis再加载application.yml,也就解释了为什么application.propertis 文件会在application.yml之前被读取到了。
     
    最后通过搜索所有的依赖类,终于在引入的stater包 找到了相关文件 application.properties.原来是因为该包中含有application.properties文件,而当我们的项目依赖该包时,该配置文件依然生效,并且优先于我们的application.yml加载。从而导致我们的配置失效。

     

    解决方案:
     
    1.指定profile-active。Spring会在查找配置文件时,加上profile-active后缀。
    2.删除依赖包中的application.properties
    3.application.yml 更改为application.properties 直接覆盖依赖包的配置

  • 相关阅读:
    mojo 接口示例
    MojoliciousLite: 实时的web框架 概述
    接口返回json
    centos 6.7 perl 版本 This is perl 5, version 22 安装DBI DBD
    centos 6.7 perl 5.22 安装DBD 需要使用老的perl版本
    商业智能改变汽车行业
    商业智能改变汽车行业
    读MBA经历回顾(上)目的决定手段——北漂18年(48)
    perl 升级到5.20版本
    Group Commit of Binary Log
  • 原文地址:https://www.cnblogs.com/ymqj520/p/13627113.html
Copyright © 2011-2022 走看看