• 关于使用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 直接覆盖依赖包的配置

  • 相关阅读:
    R语言 which() 、 which.min() 、 which.max() 函数
    R rep() 函数
    R语言 一个向量的值分派给另一个向量
    R语言 sample抽样函数
    超参数 hyperparameters
    随机游走模型(Random Walk)
    随机数
    Lambda 函数与表达式
    static
    变量的申明定义
  • 原文地址:https://www.cnblogs.com/ymqj520/p/13627113.html
Copyright © 2020-2023  润新知