• Spring配置加载顺序


    Spring配置加载顺序

    对于一个标准的Spring Boot应用,可以通过多种方式进行配置。比如前面一直使用的配置文件(properties或yml)、命令行参数,此外还有系统环境变量、JVM的参数等。下面我们来了解一下这些配置方式。

    • 命令行参数:命令行参数使用–xxx=xxx格式在启动时传递,比如:–server.port=2300,就是将服务的端口设置为2300。这里的参考可以是Spring Boot框架的参数,也可以是我们自定义的参数或属性配置。
    • 从java:comp/env加载的JNDI属性。·Java系统属性:通过-Dxxx=xxx格式设置,只是优先级比上面的配置低。
    • 操作系统环境变量:这里需要注意的一点是,有些操作系统配置时不支持使用点“.”进行分割,则需要将点替换成下画线。例如,server.port需要替换成server_port。
    • RandomValuePropertySource:使用random.*属性进行配置,主要是在系统配置中需要使用随机数的地方使用,如foo.securityid=${random.value}。
    • 特定应用的properties或yml配置文件:这些文件名称的命名格式为application-{profile}.properties或者yml,通过指定所要使用的profile来加载,例如前面使用的application-dev.properties配置文件。
    • 应用配置文件application.properties或yml文件:为Spring Boot应用所默认加载的配置文件,可以通过上面的配置进行全部或部分配置属性的覆写。
    • @Configuration、@PropertySource或@ConfigurationProperties所指向的配置文件,其中@ConfigurationProperties可以批量按照一定规范将配置注入到一个Bean中,但这些配置的优先级较低。
    配置资源规则详解

    我们知道了配置文件可以存放在Git库或者文件系统中,但是应该如何放置这些配置文件?配置客户端又是如何读取这些文件?配置服务器又是如何知道该返回哪个配置文件的数据给客户端呢?其实Spring Cloud Config是通过EnvironmentRepository来获得Environment对象解决这些问题的,该对象是对Spring的Environment(包括做为主要配置属性的propertySources)对象的浅拷贝。在加载Environment相应资源时参数化成了下面3个变量。

    • {application}:对应客户端配置中的spring.application.name。
    • {profile}:对应客户端配置中的spring.profiles.active(多个profile使用逗号分开)。
    • {label}:对应配置服务器端所配置的spring.cloud.config.label,如Git中的master。
    访问配置服务器上的配置文件
    • /{application}/{profile}[/{label}]
    • /{application}-{profile}.yml
    • /{label}/{application}-{profile}.yml
    • /{application}-{profile}.properties
    • /{label}/{application}-{profile}.properties

    label则是对应的Git上分支名称,是一个可选参数,如果没有,则默认从master分支进行查找。

    配置项

    1、搜索目录

    spring.cloud.config.server.git.searchPaths=foo
    
    • 1

    2、缓存目录

    # Git仓库本地临时目录
    spring.cloud.config.server.git.basedir=tmp/
    
    • 1
    • 2

    3、使用本地系统

    #可直接从当前的classpath或文件系统中加载配置文件
    spring.profiles.active=native
    #默认配置服务器是从classpath目录下加载配置文件,这个属性来设置配置文件所在的目录。对于所配置的文件路径,配置必须以“file:”开头。如果配置服务器的操作系统是Windows系统,那么对于绝对路径,还需要对其中的“/”进行转义。也支持使用{application}、{profile}和{label} 占位符进行配置。
    spring.cloud.config.server.native.searchLocations
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    Arduino驱动TCS3200传感器(颜色传感器篇)
    SQLITE 数据库增删改查
    锐捷OSPF基础实验配置
    Skywalking(8.7)安装以及docker镜像打包
    1024程序员节|JavaScript代码之美—代码优化,减少if-else冗余的技巧
    位级运算之计算整数位级表示奇偶性
    如何避免电弧产生?—— AAFD故障电弧探测器为您解决
    【附源码】Python计算机毕业设计宿舍管理系统设计
    6套台式组装机电脑配置清单大全(2022年618)
    这些大厂笔试题 你都见识(指被无情鞭挞)过了吗?—— 哔哩哔哩篇
  • 原文地址:https://blog.csdn.net/hou_ge/article/details/109638641