SpringBoot全局配置文件
application.properties
application.yaml/application.yml
一般全局配置文件放在src/main/resources路径下类路径的config目录下
yaml文件:
1.大小写敏感
2.空格不可少,缩进控制层级,左对齐的元素拥有相同的层级
3.k:v
字面量v:
""会转义特殊字符, 例如: name:"hub\nery" 输出:hub换行ery
''不会转义特殊字符,例如: name:'hub\nery' 输出:hub\nery
对象的行内写法:
person:{name:hubery,age:18}
数组,集合(list,set)的行内写法:
pets:{dog,cat,pig}
换行写法:
每个元素前面都需要加‘-’
pets:
-dog
-cat
-pig
properties文件:
1.大小写敏感
2.字符串不需要加"",否则真实保存的字符串内容为""value"",另外转义字符在这里不会转义
3.数组,集合(List,Set)
person.list=1,2,3
SpringBoot占位符的使用${}
1.可以使用系统定义的变量 ${ramdom.uuid}
2.可以使用定义于参数的变量 ${person.name}
3.可以对于不存在的变量设置默认值 ${person.name:hubery}
SpringBoot profile
1.对于不同环境的配置进行快速激活
不同环境,开发,测试,生产
application-dev.properties或者application-dev.yml
application-test.properties或者application-test.yaml
application-prod.properties或者application-prod.yaml
默认格式:
application-profile.properties或者application-profile.yml
2.在未申明的情况下,SpringBoot默认使用application.proeperties或application.yml配置文件
3.激活指定配置文件的格式:spring.profiles.active=dev
4.yaml文档块的方式进行激活,具体细节不详述,但是一般推荐采用
例子如下:
server:
port: 8084
spring:
profiles:
active: test
---
server:
port: 8085
spring:
profiles: test
---
server:
port: 8086
spring:
profiles: prod
5.idea 命令行配置、激活不同环境
SpringBoot配置文件加载位置及加载优先级
1.(重要)命令行参数优先
例子: java -jar market.SNAPSHOT.jar --server.port=8089 --server.context.path=/market
//命令行的方式修改系统运行的端口,不再需要去更改系统配置文件
注意:命令行多个参数之间使用空格隔开
2.来自java:comp/env的JDNI参数
3.Java系统属性{System.properties}
4.操作系统环境变量
5.RandomValuePropertySource配置的random.*属性
6.(重要)jar包外部的application-{profile}.properties或application.yml{带spring.profile}配置文件
7.(重要)jar包内部的application-{profile}.properties或application.yml{带spring.profile}配置文件
8.(重要)jar包外部的application.properties或application.yml{不带spring.profile}配置文件
9.(重要)jar包内部的application.properties或application.yml{不带spring.profile}配置文件
10.@Configuration注解类上的@PropertiesSource
11.通过SpringApplication.setDefaultProperties指定的默认属性
SpringBoot配置文件具体能做哪些配置地址:SpringBoot配置项
SpringBoot自动配置的原理
1.通过@SpringBootApplication里面的@EnableAutoConfiguration加载SpringBoot.properties(此文件在Maven项目的AutoConfigurer依赖里面)配置文件
2.通过配置文件加载所有的@Configuration配置类
3.由于大部分的自动配置都使用了@ConditionalOnXXX注解,表示如果我们需要使用到某些自动配置,那么我需要先判断此系统是否满足此自动配置的条件。
打印SpringBoot自动配置报告
1.我们可以配置debug=true来开启SpringBoot自动配置的打印
2. 具体的报告会在SpringBoot启动时打印,报告内详细的记录里那些自动配置被使用,那些自动配置没有满足自动配置的条件而未被使用
3.positive match: 启用了的自动配置
4.negative match: 没有启用的自动配置(没有满足自动配置的条件)