目录

目录

Spring Boot 核心配置文件

Spring Boot YAML 语法规范

配置文件位置与加载顺序

外部配置加载位置与顺序

命令行参数

spring.config.location

Spring Boot 多环境配置


Spring Boot 核心配置文件

1、SpringBoot 的核心配置文件有两个:bootstrap (.yml 或者 .properties),application (.yml 或者 .properties)。

2、Spring Boot 中有两种上下文,一种是 bootstrap, 另外一种是 application, bootstrap 是应用程序的父上下文。两个上下文共用一个环境,它是任何 Spring 应用程序的外部属性的来源。

3、boostrap 由父 ApplicationContext 加载,比 applicaton 优先加载,都可以用来配置参数。

4、bootstrap 优于 application 加载;bootstrap 偏向系统层级的参数配置,Bootstrap 属性有高优先级,默认情况下,它们不会被本地配置覆盖。application 偏向应用层级的参数配置。

4、使用 Spring Cloud Config 配置中心时,这时需要在 bootstrap 配置文件中添加连接到配置中心的配置属性来加载外部配置中心的配置信息;
         a、一些固定的不能被覆盖的属性
         b、一些加密/解密的场景;

Spring Boot YAML 语法规范

1、Spring Boot 使用一个全局配置文件来对一些默认配置值进行修改,比如 Tomcat 端口等

2、配置文件名字约定为 “application.properties” 或者 “application.yml”

3、配置文件放必须放在 src/main/resources 目录或者类路径 /config 下

4、yml 全称 YAML(YAML Ain't Markup Language),以数据为中心,比 json、xml 等更适合做配置文件

5、语法规范参考网址:http://www.yaml.org

YAML 语法

1、k:(空格)v:表示一对键值对,注意必须有空格,如 info: good

2、使用缩进表示层级关系,缩进时不允许使用Tab键,只允许使用空格,具体个数没有强制限制,只要相同层级的元素左侧对齐即可(通常约定使用两个2个空格)

3、大小写敏感,如:

server:
  port: 8082
YAML 支持以下数据结构
数据类型 描述 举例
对象 键值对的集合,常用写法

k: v:在下一行来写对象的属性和值的关系;注意缩进.冒号后面跟空格来分开键值;如下 frined 表示对象,latName  与 age 表示属性:

friend:
  lastName: zhangsan
  age: 20

{k: v}:行内写法,如下 frined 表示对象,latName 与 age表示属性

friend: {lastName: zhangsan,age: 18}

List 一组按次序排列的值

“- 值”表示数组中的一个元素,注意缩进 和空格,如:

Animal:
 ‐ cat
 ‐ dog

行内写法:Animal: [cat,dog,pig]

数组 用逗号分隔 a,b,c,d,e,如:user.arr=ab,c,d,e
字面量 单个的、不可再分的值

k: v:字面量直接写,值(v)可以是“数字”、“字符串”、“布尔”、“日期”

字符串默认不使用单引号或者双引号

双引号不会转义字符串里面的特殊字符,特殊字符会作为本身想表示的意思,,如:name: "zhangsan \n lisi":输出的结果是:zhangsan 换行 lisi

单引号会转义字符串中的特殊字符,特殊字符最终只是一个普通的字符串数据,如:name: ‘zhangsan \n lisi’:输出结果为:zhangsan \n lisi

复合结构 以上三种写法的任意组合都可以

配置文件位置与加载顺序

1、Spring boot 启动时自动扫描以下位置的 application.properties 或者 application.yml 文件作为 Spring boot 的默认配置文件。

–file:./config/    -------------整个项目根目录下的config目录下

–file:./    ---------------------整个项目根目录下

–classpath:/config/---------类路径下的config目录下

–classpath:/-----------------类路径根目录下

2、优先级从上往下由高到底,高优先级的配置会覆盖低优先级的配置;Spring Boot 会从这四个位置加载所有的主配置文件,如果高优先级的内容与低优先级的内容相同,则覆盖;如果低优先级的内容在高优先级中没有,则形成互补。

3、应用启动后,1 位置的端口会生效,控制台会输出:Tomcat started on port(s): 8081 (http) with context path '/coco'

4、项目打包之后,与 jar 同目录下的位置相当于位置2,与 jar 同目录下的 config 子目录相当于位置 1.

外部配置加载位置与顺序

1、Spring Boot 支持多种外部配置方式,如下所示,从上往下加载优先级由高到低,内容相同时覆盖,不相同时累加。

1、命令行参数
2、来自 java:comp/env 的 JNDI 属性
3、使用“spring.config.location”改变默认的配置文件位置
4、Java 系统属性(System.getProperties())
5、操作系统环境变量
6、RandomValuePropertySource 配置的 random.* 属性值
7、jar 包外部的 application-{profile}.properties 或 application.yml (带spring.profile) 配置文件
8、jar 包内部的 application-{profile}.properties 或 application.yml (带spring.profile) 配置文件
9、jar 包外部的 application.properties 或 application.yml (不带spring.profile) 配置文件
10、jar 包内部的 application.properties 或 application.yml (不带spring.profile) 配置文件
11、@Configuration注解类上的@PropertySource
12、通过SpringApplication.setDefaultProperties指定的默认属性

2、官方文档:Externalized Configuration

命令行参数

1、命令行参数格式:java -jar xxxxx.jar --server.port=8082

2、多个参数时,用空格隔开,如: java -jar xxxxx.jar --server.port=8082 --server.servlet./context-path=/coco

3、修改端口同时指定上下文路径,命令行参数优先级高于 jar 文件内部的配置文件参数。

spring.config.location

1、通过 --spring.config.location 可以新的配置文件位置,自定义的外部配置文件优先级高于Jar文件内部的配置文件。

2、项目打包好以后,使用命令行参数的形式,启动项目的时候来指定配置文件的新位置:

1、新指定的配置文件和默认加载的这些配置文件共同起作用形成互补配置;
2、格式:java -jar spring-boot-xxx.jar --spring.config.location=G:/application.properties
3、spring-boot-xxx.jar 是打包好的应用文件、G:/application.properties是新的配置文件路径

3、当 application.properties 或 application.yml 文件在 xxx.jar 应用同目录下时,可以省略 --spring.config.location,直接双击运行,它会自动读取当前目录下的配置 application.properties 或 application.yml 文件。

Spring Boot 多环境配置

1、Profile 是 Spring 对不同环境提供不同配置功能的支持,可以通过激活、指定参数等方式快速切换环境

2、项目开发时有开发环境、测试环境、部署环境等,可以通过 profile 配置切换

3、spring.profiles.active 的值为多个时,用逗号隔开,官网文档。

方式1:多 profile 文件形式

1、格式:application-{profile}.properties/yml,如:application-dev.properties、application-prod.properties 等

2、Spring Boot 默认从全局配置文件 application.properties 和 application.yml 进入开始读取

3、然后在全局配置文件 application.properties 和 application.yml 激活使用 “spring.profiles.active=profile”  激活指定文件.

方式2: yml 文档块形式

1、yml 文件支持多文档块方式,同一个 yml 文件中,可以使用"---"来区分不同的文档,相当于不同的配置文件

2、这也是 Spring Boot 官方推荐的方式

spring:profiles:active: devel #指定激活哪个环境配置,激活后,第一个文档内容失效;不指定时,以第一个文档为准
server:port: 8083
--- #"---"用于分隔不同的profiles()文档块
spring:profiles: devel #指定环境标识为"devel",相当于"application-{profile}.properties/yml"中的profile
server:port: 8081
---
spring:profiles: deploy #指定环境标识为"deploy",相当于"application-{profile}.properties/yml"中的profile
server:port: 8082

Spring Boot 核心配置文件,yml 语法规范、 多环境配置、配置文件加载顺序相关推荐

  1. spring boot启动类启动 错误: 找不到或无法加载主类 xxx.xxxx.Application 的解决方法

    spring boot启动类启动 错误: 找不到或无法加载主类 xxx.xxxx.Application 的解决方法 导入的一个外部的spring boot项目,运行启动类,忽然提示找不到或者无法加载 ...

  2. spring boot 踩坑日记: 错误: 找不到或无法加载主类 xxx.xxx.xxx

    错误信息: 错误: 找不到或无法加载主类 io.sr.SrDhTraApplication 解决: 在pom.xm文件中指明启动类位置: 代码: <configuration><fo ...

  3. Spring Boot 配置文件加载顺序

    1.介绍 依次为: bootstrap.properties -> bootstrap.yml -> application.properties -> application.ym ...

  4. Spring Boot 配置加载顺序详解

    使用 Spring Boot 会涉及到各种各样的配置,如开发.测试.线上就至少 3 套配置信息了.Spring Boot 可以轻松的帮助我们使用相同的代码就能使开发.测试.线上环境使用不同的配置. 在 ...

  5. Spring Boot 核心注解与配置文件

    一.入口类与@SpringBootApplication 注解 Spring Boot项目都会有一个*Application 类,这个类作为Spring Boot 项目的入口类,在这个入口类中有mai ...

  6. Spring Boot核心配置

    转载自 Spring Boot核心配置 启动类 在包根目录下添加启动类,必须包含main方法,再添加Spring Boot启动方法: SpringApplication.run(SampleContr ...

  7. Spring Boot 核心原理与源码解析 - 目录

    准备重新写 SpringBoot 配置文件解析原理 , 先在这里把要写的内容记下来 Spring Boot 核心原理与源码解析 - 目录 1\何时解析\如何解析 application.propert ...

  8. Spring Boot 核心编程思想-第二部分-读书笔记

    怕什么真理无穷 进一步有近一步的欢喜 说明 本文是Spring Boot核心编程思想记录的笔记,书籍地址:Spring Boot编程思想(核心篇): 这篇文档会记录这本我的一些读书的思考,内容可能比较 ...

  9. Spring Boot核心(基本配置)

    上一篇Spring Boot我们简单讲了如何快速创建一个SpringBoot项目.大家都知道SpringBoot非常强大,可以轻松与各种工具集成,但是我们知其然,也必须知其所以然.今天开始就和大家一起 ...

  10. 2.Spring Boot核心

    2.1 基本配置 1.入口类和@SpringBootApplication Spring boot通常有一个名为*Application的入口类,入口类里面有一个main方法,这个main方法其实就是 ...

最新文章

  1. 动态链接库与静态链接库
  2. svn服务器搭建及使用 二
  3. java实现手机短信验证全过程
  4. Elasticsearch-集群原理
  5. VScode 汉化以及侧栏npm脚本显示
  6. 微信企业号第三方应用开发[二]——创建应用
  7. tool vmmap 配置符号文件 symbolic file
  8. 基于Windows Server 2019域环境体验Veeam ONE 10安装
  9. jenkins, docker-composer
  10. 企业——Redis的高可用的搭建
  11. Atitit ocr的艺术 艾提拉著 目录 1. OCR可以说是一门非常“古老”的技术,在上世纪50年代到90年代, 1 1.1. 场景文字识别技术(Scene Text Recognition,
  12. 介绍一款国际性的本体社群聊天软件Discord
  13. magicyang语录
  14. VScode 常用插件推荐,非常全面
  15. 转行的35岁程序员们
  16. SpringBoot-端点详解
  17. 常见的shell介绍(与bash功能类似的应用程序有哪些)
  18. 第五章 生活无处不数据,大数据真的能算命?
  19. 计算机在校学校目标和措施,学校信息化工作方案
  20. 文献阅读:ESAM: Discriminative Domain Adaptation with Non-Displayed Items to Improve Long-Tail Performanc

热门文章

  1. ASP Blob类型转存为Long Raw类型
  2. [导入]构建WCF面向服务的应用程序系列课程(10):安全基础.zip(24.27 MB)
  3. sql 获取日期时分秒_SQL获取系统年月日时分秒 | 学步园
  4. 拓端tecdat|R 语言绘制功能富集泡泡图
  5. 【大数据部落】r语言使用rjags R2jags建立贝叶斯模型
  6. C++输入变长字符串
  7. 机器学习sklearn中决策树模型参数释义
  8. 双向链表的插入删除和遍历
  9. 中计算正方形面积的方法_风管及管道部件设计过程中常用的计算方法
  10. 【转】深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)