zoukankan      html  css  js  c++  java
  • springboot加载配置文件顺序

    图片和部分表述来自参考文章非原创

    spring boot 加载配置文件

    一张图来说明 1297993-20200706162341109-866708304.png

    具体的顺序就是 :

    1、config/application.properties(项目根目录中config目录下) 2、config/application.yml 3、application.properties(项目根目录下) 4、application.yml 5、resources/config/application.properties(项目resources目录中config目录下) 6、resources/config/application.yml 7、resources/application.properties(项目的resources目录下) 8、resources/application.yml

    application 和 bootstrap 文件的区别

    bootstrap 从名字就感觉会比 application 早加载,官方文档中的解释 :

    Spring Cloud 构建于 Spring Boot 之上,在 Spring Boot 中有两种上下文,一种是 bootstrap, 另外一种是 application, bootstrap 是应用程序的父上下文,也就是说 bootstrap 加载优先于 applicaton。bootstrap 主要用于从额外的资源来加载配置信息,还可以在本地外部配置文件中解密属性。这两个上下文共用一个环境,它是任何Spring应用程序的外部属性的来源。bootstrap 里面的属性会优先加载,它们默认也不能被本地相同配置覆盖。
    

    因此,对比 application 配置文件,bootstrap 配置文件具有以下几个特性。

    • boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载
    • boostrap 里面的属性不能被覆盖

    bootstrap/ application 的应用场景

    • application 配置文件这个容易理解,主要用于 Spring Boot 项目的自动化配置。
    • 使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息; -- 一些固定的不能被覆盖的属性 -- 一些加密/解密的场景;

    自定义配置文件加载

    1. 令行参数 所有的配置都可以在命令行上进行指定,例如 :
    java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc
    
    1. 来自java:comp/env的JNDI属性

    2. Java系统属性(System.getProperties())

    3. 操作系统环境变量

    4. RandomValuePropertySource配置的random.*属性值   由jar包外向jar包内进行寻找; 优先加载带profile

    5. jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件

    6. jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件   再来加载不带profile

    7. jar包外部的application.properties或application.yml(不带spring.profile)配置文件

    8. jar包内部的application.properties或application.yml(不带spring.profile)配置文件

    9. @Configuration注解类上的@PropertySource

    10. 通过SpringApplication.setDefaultProperties指定的默认属性 所有支持的配置加载来源;

    参考资料

    加载顺序

    • https://www.jianshu.com/p/3c615bd42799
    • https://blog.csdn.net/weixin_41404773/article/details/82459993 application 和 bootstrap 文件的区别
    • https://www.cnblogs.com/javastack/p/11003795.html
  • 相关阅读:
    uva-679 Dropping Balls UVA
    并查集模板
    最大子段和模板
    uva 10048 Audiophobia UVA
    2018/11/2 周五集训队第三次比赛补题题解
    单源最短路径算法小总结
    DP背包问题小总结
    SpringMVC的请求-获得请求参数-获得请求头信息
    SpringMVC的请求-获得请求参数-自定义类型转换器
    SpringMVC的请求-获得请求参数-Restful风格的参数的获取
  • 原文地址:https://www.cnblogs.com/Benjious/p/13255519.html
Copyright © 2011-2022 走看看