主页 > 游戏开发  > 

SpringBoot配置文件加载优先级


SpringBoot 配置文件加载优先级 前言SpringBoot 配置文件加载优先级

前言

最近在使用k8s部署项目的时候,发现Dockerfile文件中的命令后面跟的参数,无法覆盖nacos中的参数,今天有时间正好来整理一下Springboot配置的加载顺序

SpringBoot 配置文件加载优先级

整理加载顺序第一个肯定看官方文档:https://docs.spring.io/spring-boot/docs/2.2.9.RELEASE/reference/htmlsingle/#boot-features-external-config 看不懂我们直接用翻译软件翻译一下

这里我们只对比常用的几个地方的配置优先级:

#mermaid-svg-dc4tzymPHW1gZe2h {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-dc4tzymPHW1gZe2h .error-icon{fill:#552222;}#mermaid-svg-dc4tzymPHW1gZe2h .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-dc4tzymPHW1gZe2h .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-dc4tzymPHW1gZe2h .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-dc4tzymPHW1gZe2h .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-dc4tzymPHW1gZe2h .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-dc4tzymPHW1gZe2h .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-dc4tzymPHW1gZe2h .marker{fill:#333333;stroke:#333333;}#mermaid-svg-dc4tzymPHW1gZe2h .marker.cross{stroke:#333333;}#mermaid-svg-dc4tzymPHW1gZe2h svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-dc4tzymPHW1gZe2h .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-dc4tzymPHW1gZe2h .cluster-label text{fill:#333;}#mermaid-svg-dc4tzymPHW1gZe2h .cluster-label span{color:#333;}#mermaid-svg-dc4tzymPHW1gZe2h .label text,#mermaid-svg-dc4tzymPHW1gZe2h span{fill:#333;color:#333;}#mermaid-svg-dc4tzymPHW1gZe2h .node rect,#mermaid-svg-dc4tzymPHW1gZe2h .node circle,#mermaid-svg-dc4tzymPHW1gZe2h .node ellipse,#mermaid-svg-dc4tzymPHW1gZe2h .node polygon,#mermaid-svg-dc4tzymPHW1gZe2h .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-dc4tzymPHW1gZe2h .node .label{text-align:center;}#mermaid-svg-dc4tzymPHW1gZe2h .node.clickable{cursor:pointer;}#mermaid-svg-dc4tzymPHW1gZe2h .arrowheadPath{fill:#333333;}#mermaid-svg-dc4tzymPHW1gZe2h .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-dc4tzymPHW1gZe2h .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-dc4tzymPHW1gZe2h .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-dc4tzymPHW1gZe2h .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-dc4tzymPHW1gZe2h .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-dc4tzymPHW1gZe2h .cluster text{fill:#333;}#mermaid-svg-dc4tzymPHW1gZe2h .cluster span{color:#333;}#mermaid-svg-dc4tzymPHW1gZe2h div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-dc4tzymPHW1gZe2h :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} #mermaid-svg-ZcQCC7HaCFBiLi6P {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ZcQCC7HaCFBiLi6P .error-icon{fill:#552222;}#mermaid-svg-ZcQCC7HaCFBiLi6P .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ZcQCC7HaCFBiLi6P .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ZcQCC7HaCFBiLi6P .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ZcQCC7HaCFBiLi6P .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ZcQCC7HaCFBiLi6P .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ZcQCC7HaCFBiLi6P .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ZcQCC7HaCFBiLi6P .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ZcQCC7HaCFBiLi6P .marker.cross{stroke:#333333;}#mermaid-svg-ZcQCC7HaCFBiLi6P svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ZcQCC7HaCFBiLi6P .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ZcQCC7HaCFBiLi6P .cluster-label text{fill:#333;}#mermaid-svg-ZcQCC7HaCFBiLi6P .cluster-label span{color:#333;}#mermaid-svg-ZcQCC7HaCFBiLi6P .label text,#mermaid-svg-ZcQCC7HaCFBiLi6P span{fill:#333;color:#333;}#mermaid-svg-ZcQCC7HaCFBiLi6P .node rect,#mermaid-svg-ZcQCC7HaCFBiLi6P .node circle,#mermaid-svg-ZcQCC7HaCFBiLi6P .node ellipse,#mermaid-svg-ZcQCC7HaCFBiLi6P .node polygon,#mermaid-svg-ZcQCC7HaCFBiLi6P .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ZcQCC7HaCFBiLi6P .node .label{text-align:center;}#mermaid-svg-ZcQCC7HaCFBiLi6P .node.clickable{cursor:pointer;}#mermaid-svg-ZcQCC7HaCFBiLi6P .arrowheadPath{fill:#333333;}#mermaid-svg-ZcQCC7HaCFBiLi6P .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ZcQCC7HaCFBiLi6P .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ZcQCC7HaCFBiLi6P .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ZcQCC7HaCFBiLi6P .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ZcQCC7HaCFBiLi6P .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ZcQCC7HaCFBiLi6P .cluster text{fill:#333;}#mermaid-svg-ZcQCC7HaCFBiLi6P .cluster span{color:#333;}#mermaid-svg-ZcQCC7HaCFBiLi6P div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ZcQCC7HaCFBiLi6P :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 命令行参数 JAR包外面的 application-{profile}.properties JAR包外的 application.properties JAR包内的 application.properties

而且有的项目会将 application.properties 文件放在config文件夹内,于是进一步对比了这两个位置的优先级,结果如下

. project-sample ├── config │ ├── application.yml (4) │ └── src/main/resources | │ ├── application.yml (1) | │ └── config | | │ ├── application.yml (2) ├── application.yml (3) 注:src/main/resources下的配置文件在项目编译时,会放在target/classes下

启动时加载配置文件顺序:1 -> 2 -> 3 -> 4,优先级 4 > 3 > 2 > 1

注意:

如果在IDEA中是多 module 项目,3 和 4 的位置是指的是项目根目录下的位置当 .properties 和 .yml 文件同时存在时,.properties会失效,.yml会起作用。

nacos上的配置 > 命令行配置 > system env > classpath:application.yml > classpath:bootstrap.yml

标签:

SpringBoot配置文件加载优先级由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“SpringBoot配置文件加载优先级