泓泰

Spring Boot 配置文件说明,yml 语法规范

admin
配置文件

1.Spring Boot的配【pèi】置文件有两个:bootstrap和application,均可以以.yml 或者.properties扩展名结尾。

2.Spring Boot 中有bootstrap和application两【liǎng】种【zhǒng】上下文。bootstrap是应用程序的父上下文。两个【gè】上【shàng】下文共用一个环境,它【tā】是任【rèn】何 Spring 应用程序【xù】的外部属性【xìng】的来源。

3.boostrap由【yóu】父ApplicationContext加载,比applicaton优【yōu】先加载,都可【kě】以用【yòng】来配置参数。

4.bootstrap优先【xiān】application 加【jiā】载;bootstrap 偏【piān】向系统层级【jí】的参数配置,Bootstrap 属性有高优【yōu】先级,默【mò】认【rèn】情况下,它们不会被本地配【pèi】置覆盖。application 偏向应【yīng】用【yòng】层级的参数配置。

5.使用 Spring Cloud Config 配置中心【xīn】时,这时需【xū】要在 bootstrap 配置文【wén】件中添加连接到【dào】配置中心【xīn】的配置属性来加载【zǎi】外部配置中心【xīn】的配【pèi】置信息;比如一些固定的不能【néng】被覆盖的属【shǔ】性或者加密/解【jiě】密的【de】场景;

properties与yml的区别

1.在properties文件中是以”.”进行【háng】分割的【de】,在yml中【zhōng】是用”:”进行分【fèn】割;

2.yml的数据格式和json的【de】格【gé】式很像,都是【shì】K-V格式,并且【qiě】通【tōng】过”:”进行赋【fù】值;

3.在yml中缩进一定不能使用TAB,否则会报很奇怪的错误;

4.yml每个【gè】key的【de】冒号后面一【yī】定【dìng】都要加一个【gè】空格;列表的“-”后面也要加空格。

5.使【shǐ】用spring cloud的maven进行【háng】构造的项目,在把【bǎ】properties换成【chéng】yml后,一定【dìng】要进行【háng】mvn clean install

6.yml是【shì】跨语言【yán】的:可【kě】以在包括【kuò】JAVA,go,python等大量的语言中使用,比【bǐ】如做云计算【suàn】使用go和java的时候【hòu】,可以通过配置中心使用同一份配【pèi】置!

7.yml配置文件支持【chí】列表,properties只支持键【jiàn】值对数据。

8.AML支持多种数据类型,如字符串、数字【zì】、布尔值【zhí】、数组、对【duì】象等,可以更【gèng】好地表【biǎo】示复杂的数据结【jié】构。而【ér】Properties只支持字符串类型,不【bú】支持其他数据类型。

9.yml是支持中文内【nèi】容【róng】的,properties想使用中文【wén】要用unicode编码。

10.顺序【xù】问题,properties是不保证加载顺序的,yml有先后顺序,比【bǐ】如【rú】springcloud的zuul网关路由配置,如果一个uri同时满足两个匹配规则,properties你是不知道它【tā】到底使用了【le】哪个规则的,而yml则【zé】一定是使用【yòng】了靠后【hòu】的那个路由规则【zé】。Java 的 Properties 加载属性文件【jiàn】后是无【wú】法保【bǎo】证输出的顺序与文【wén】件【jiàn】中一致的,因【yīn】为 Properties 是继承自Hashtable,key/value 都【dōu】是【shì】直接存在 Hashtable中的,而Hashtable是不【bú】保证进【jìn】出顺【shùn】序【xù】的。

YAML 数据结构Spring Boot 配置文件说明,yml 语法规范-第1张-游戏相关-泓泰

对象:键值对【duì】的集合【hé】,常【cháng】用写法【fǎ】。k: v:在下一行来写对象的属【shǔ】性【xìng】和值的关系;注意缩进.冒号后面跟【gēn】空格来分开键值;

person:  name: 小明  age: 20

或用行内写法:

person: {name: 小明,age: 18}

List:一组按【àn】次序排列的【de】值。“- ”表示数组中的一个元素,注意【yì】缩【suō】进和【hé】空【kōng】格。

name: ‐ 小明 ‐ 小红 ‐ 小刚

或用行内写法:

name: [小明,小红,小刚]

数组:用逗号分隔

name:    arr: 小明,小红,小刚

字面量:单个的、不可再分的值

k: v字【zì】面量直接写,值(v)可以是“数字”、“字符串”、“布尔”、“日【rì】期【qī】”

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

双【shuāng】引号不会转义字符【fú】串里面的特殊字【zì】符,特殊字符【fú】会作为本身想表示的【de】意【yì】思,,如:name: "小明 \n 小【xiǎo】红":输出的结果是:小明 换【huàn】行 小红

单【dān】引号【hào】会转义字符串中的特殊字【zì】符,特殊字符最终只是一【yī】个【gè】普通的字符串数据,如:name: ‘小明【míng】 \n 小红【hóng】’:输出结果【guǒ】为【wéi】:小明 \n 小红

配置文件位置与加载顺序

1.存放位置

–file:./config/ -------------整个项目根【gēn】目录下的config目录下

–file:./ ---------------------整【zhěng】个项目根目录下

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

–classpath:/-----------------类路径根目【mù】录下【xià】

2.加载顺序优先级

优先级按照上面的顺序从上往下由高到低,高优先级的配置会覆盖低优先级的配置;Spring Boot 会从这【zhè】四【sì】个位置加载所有的主配【pèi】置文【wén】件,如果高【gāo】优先【xiān】级的【de】内【nèi】容与【yǔ】低【dī】优先级的内容相同【tóng】,则【zé】覆盖;如【rú】果低优先级【jí】的内【nèi】容在【zài】高优先级中没有,则形成互补。

外部配置加载位置与顺序

Spring Boot 支【zhī】持多种外部配置方式,如下【xià】所示,仍然【rán】从【cóng】上【shàng】往【wǎng】下加载【zǎi】优先级由高到低,内容【róng】相同时覆盖,不【bú】相同时累加。

1.命令行参数。
2.来自 java:comp/env 的 JNDI 属性。
3.使用“spring.config.location”改变【biàn】默【mò】认的【de】配置【zhì】文件位置。
4.Java 系统【tǒng】属性(System.getProperties())。
5.操作系统环境变量。
6.RandomValuePropertySource 配置的 random.* 属【shǔ】性值【zhí】。
7.jar 包外部的【de】 application-{profile}.properties 或 application.yml (带spring.profile) 配【pèi】置文件。
8.jar 包内部的 application-{profile}.properties 或【huò】 application.yml (带spring.profile) 配置【zhì】文件。
9.jar 包外部的 application.properties 或 application.yml (不带【dài】spring.profile) 配置文件【jiàn】。
10.jar 包内部的 application.properties 或 application.yml (不【bú】带spring.profile) 配置文【wén】件。
11.@Configuration注解类上【shàng】的@PropertySource。
12.通【tōng】过SpringApplication.setDefaultProperties指定的默【mò】认属性。

欢迎点赞、关【guān】注、转发【fā】,私信可获取免【miǎn】费【fèi】springboot视频教程!!!


标签: #刺客信条起源配置要求