【博学谷学习记录】超强总结,用心分享|狂野架构师SpringBoot常用知识点
项目配置文件加载顺序
文件名顺序
先加载bootstrap.yml(bootstrap.properties)
后加载application.yml(application.properties)
位置顺序:
优先级第一:
file:./config/:当前项目下的/config目录下
![img](file:///C:\Users\阿谢\AppData\Local\Temp\ksohtml22376\wps1.jpg)
优先级第二:
file:./ :当前项目的根目录
![img](file:///C:\Users\阿谢\AppData\Local\Temp\ksohtml22376\wps2.jpg)
优先级第三:
classpath:/config/:
![img](file:///C:\Users\阿谢\AppData\Local\Temp\ksohtml22376\wps3.jpg)
优先级第四:
classpath:/
![img](file:///C:\Users\阿谢\AppData\Local\Temp\ksohtml22376\wps4.jpg)
项目外部配置加载顺序
#配置-yaml基本语法
#大小写敏感
#数据值前边必须有空格,作为分隔符
#使用缩进表示层级关系
#缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)。
#缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
#''#" 表示注释,从这个字符一直到行尾,都会被解析器忽略
#定义可配置的数据:
#对象(map):键值对的集合。
person:
name: zhangsan
# 行内写法
person: {name: zhangsan}
#数组:一组按次序排列的值
address:
- beijing
- shanghai
# 行内写法
address: [beijing,shanghai]
**纯量**:单个的、不可再分的值
msg1: 'hello \n world' # 单引忽略转义字符
msg2: "hello \n world" # 双引识别转义字符
**参数引用**
name: lisi
person:
name: ${name} # 引用上边定义的name值
读取配置文件中的数据:
#获取普通配置
@Value("${name}")
private String name;
#获取对象属性
@Value("${person.name}")
private String name2;
#获取数组
@Value("${address[0]}")
private String address1;
#获取纯量
@Value("${msg1}")
private String msg1;
多个环境中使用不同的配置文件
profile是用来完成不同环境下,配置动态切换功能的。
profile配置方式
多profile文件方式:提供多个配置文件,每个代表一种环境。
application-dev.properties/yml 开发环境
application-test.properties/yml 测试环境
application-pro.properties/yml 生产环境
yml多文档方式:
在yml中使用 --- 分隔不同配置
profile激活方式
配置文件: 再配置文件中配置:spring.profiles.active=dev
虚拟机参数:在VM options 指定:-Dspring.profiles.active=dev
命令行参数:java –jar xxx.jar --spring.profiles.active=dev
其他
配置文件分类
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就
可以使用application.properties或者application.yml(application.yaml)进行配置。
-
默认配置文件名称:application
-
在同一级目录下优先级为:properties>yml > yaml
pom文件中的排除部分依赖操作
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--排除tomcat依赖-->
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-tomcat</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
SpringBoot不能直接获取在其他工程中定义的Bean
原因:
@ComponentScan 扫描范围:当前引导类所在包及其子包
三种解决方案:
1.使用@ComponentScan扫描com.itheima.config包
2.可以使用@Import注解,加载类。这些类都会被Spring创建,并放入IOC容器
3.可以对Import注解进行封装。