文章目录
二.SpringBoot配置详解
1. 传统的xml配置缺点
- 配置繁琐,需要记忆大量的配置项
- 重复配置多
- 配置可读性不强
- 可能因为一个配置出错而造成全局错误
2. SpringBoot两种配置方式比较
- properties文件配置
- YAML配置(发音参考百度,错误发音鸭妹儿哦)
1. properties文件配置
- 通常用于教学,或者单人开发的项目中
- 可读性较强
- 使用Unicode编码(不支持中文)
- 配置与配置相互独立
- 没有层级关系
- 后缀为.properties
2. YAML(Yet Another Markup Language)配置
- 企业级开发首选
- 可读性强
- 使用UTF-8编码(支持中文)
- 配置间有父子,兄弟关系
- 有明显的层级关系
- 以数据为中心
- 后缀为.yaml或者.yml
3. YAML语法入门
1. YAML基本语法约束
- 使用缩进表示层级关系(类似Python)
- 缩进时不允许Tab,只能是空格(这个IDEA帮忙做了)
- 缩进空格数量没有关系,相同层级对其即可
- 对大小写敏感
2. YAML支持的三种数据结构
-
对象:键值对(或Map)
例子:
块级写法
student: name: "张三" age: 20 sex: "男"
或者是行级写法(不常用,可读性差):
student: {name: "张三",age: 20,sex: "男"}
-
数组:一组按次序排列的值(包含List,Set)
例子:
块级写法
students: - "张三" - "李四" - "王二"
行级写法
students: ["张三","李四","王二"]
以上写法请注意空格
YAML同时支持复合结构,用的较少,不再赘述
-
字面量: 单个,不可再分的值
3. 注意事项
-
对象必须是k:+空格+v
-
同一层级必须通过空格左对齐
例:
server: port: 80
-
字面量释义
字面量: 普通的值(数字,字符串,布尔…)
-
双引号和单引号的区别
双引号不会转义特殊字符
单引号会转义特殊字符
4. 配置实战
1. 复杂对象的映射
在application.yml中创建student
student:
name: "张三"
age: 8
teacher: "小覃"
birth: "2011-08-12"
map: {k1: v1,k2: v2,k3: v3}
list:
- "李四"
- "赵五"
dog:
name: "阿黄"
在pojo中创建实例对象
public class Student {
private String name;
private Integer age;
private String teacher;
private String birth;
private HashMap map;
private ArrayList list;
private Dog dog;
}
public class Dog {
private String name;
}
我们使用@ConfigurationProperties将配置文件导入,并使用**prefix = “student”**标注前缀
这时上面会提示没有引入提示器
在pom.xml中引入提示器
<!--配置文件提示器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
同时Spring要求被注册的对象必须是Spring中的一个组件
所以添加@Component注解
然后添加对应的Getter和Setter以及toString
alt+insert
调出快捷生成面板
生成对应方法
2. lombok自动生成GST工具
-
唤出IDEA设置界面
ctrl+alt+s
-
进入插件中心安装lombok插件
-
安装成功后重启IDEA
-
在Settings设置页面,我们点击Build,Execution,Deployment–>选择Compiler–>选中Annotation Processors,然后在右侧勾选Enable annotation processing
-
在pom文件中加入lombok依赖
最新依赖
<!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.8</version> <scope>provided</scope> </dependency>
-
最后就可以直接通过@Data注解来使我们的代码更加清爽
3. properties文件编码问题实战
4.读取外部配置文件
@PropertySource 引入外部后缀为.properties的文件(不支持YAML)
@PropertySource(value = "classpath:student.properties")
@Component
@ConfigurationProperties(prefix = "student")
@Data
public class Student {
private String name;
private Integer age;
private String teacher;
private String birth;
private HashMap map;
private ArrayList list;
private Dog dog;
}
5. Profile多环境切换
Profile是SpringBoot用于切换生产环境,开发环境,调试(测试)环境配置文件的解决方案
-
命名规则
所有配置文件均以application-{profile}.yml命名
默认使用application.yml文件
-
使用spring.profile.active = {profile}激活指定文件
- yml多文档配置形式
使用
---
分割多个文档
激活方式同上
-
命令行激活模式
在启动时后面添加–spring.profile.active = {profile}
编辑项目里的Program Arguments里添加
以上博文是我在培训的时候整理的教案,码字不易,转载请注明出处,联系邮箱huanqwer0314@gmail.com