对于SSM学习的结束,小编对于配置文件的印象也逐渐加深,对于SpringBoot来说,就是简化了SSM的配置,其中SpringBoot自带了XXXAutoConfiguration自动配置类,也就是为什么SpringBoot简化了配置文件的原因,下面小编将SpringBoot的学习笔记和心得以及一些踩过的坑都分享出来
配置文件 --Aplication.xxx
1)、前言
1)、配置文件命名规范
SpringBoot使用一个全局的配置文件,配置文件名application是固定的;
application.properties
application.yml
application.yaml
配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;
其中yml和yaml是同一个文件不同的写法
2)、properties使用规则:
1.以对象调属性值得方式设置对象属性
1)、对象、Map、List(属性和值):
k: v在下一行来写对象的属性和值的关系;
person.name=李四
person.age=34
person.gender=女
person.lists=male,female //list
person.maps.k1=v1 //map
person.maps.k2=v2
person.pet.name="小白" // Dog类
person.pet.age=12
2)、数组(List、Set)
people.list={"Rocy",100,true ...}
3)、yaml使用规则:
1.以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的。
2.次等级的前面是空格,不能使用制表符(tab)。
3.冒号之后如果有值,那么冒号和值之间至少有一个空格,不能紧贴着。
1)、对象、Map、List(属性和值):
k: v在下一行来写对象的属性和值的关系;注意缩进
person:
name: 张三
gender: 男
age: 36
maps: {k1: v1,k2: v2} //map键值对写法
lists:
- apple
- peach
- banana
pet:
name: 小狗
age: 12
行内写法
person: {name: 张三,gender: 男,age: 22}
2)、数组(List、Set)
gender:
- male
- female
鼠标点击元素,是可以直接显示数组长度的
4)、PoJo类搭建:
@Component
@ConfigurationProperties(prefix = "people")
public class People {
private String name;
private String age;
private List<Object> lists;
private Dog pet;
...
}
@Component
public class Dog{
private String name;
private String age;
}
注意:在创建实体类的时候
1.一定要加入到容器中
2.使用@ConfigurationProperties注解指明在配置文件中的前缀prefix(小编这里为people)
5)、配置文件值注入:
导入依赖之后,配置文件会有提示
<!--导入配置文件处理器,配置文件进行绑定就会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
注意:yaml和properties配置文件同时存在,properties配置文件的内容会覆盖yaml配置文件的内容
2)、配置文件注入和注解注入两种方式对比
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 单个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
松散绑定:例如Person中有lastName属性,在配置文件中可以写成
lastName 或 lastname 或 last-name 或 last_name等等
3)、@PropertySource注解的使用
1).作用
@PropertySource注解的作用是加载指定的配置文件,值可以是数组,也就是可以加载多个配置文件
springboot默认加载的配置文件名是application,如果配置文件名不是这个是不会被容器加载的,所以将内容定义在自定义的properties文件中,那么这个配置文件是无效的
2).加载
用@PropertySource({“classpath:自定义文件名.properties”})指定加载自定义文件名.properties配置文件
3).效果
未加注解
加上注解:
运行结果:
4)、@ImportResource注解的使用
1)、Spring配置文件写放位置
1.也是在类路径下的resources文件夹下创建Spring配置文件
2.Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;
3.@ImportResource注解用于导入Spring的配置文件,让配置文件里面的内容生效;
1.Spring配置文件
2.boot测试类运行抛出异常
3.添加注解@ImportResource
运行结果: