1配置文件简介
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。
SpringBoot默认从Resource目录加载自定义配置文件。application.properties是键值对类型(一直在用)。application.yml是SpringBoot中一种新的配置文件方式。
- 默认配置文件名称:application
- 在同一级目录下优先级为:properties>yml > yaml
例如:配置内置Tomcat的地址和端口
properties:
server.port=8080
server.address=127.0.0.1
xml
<server>
<port>8080</port>
<address>127.0.0.1</address>
</server>
yml/yaml:
server:
port: 8080
address: 127.0.0.1
2yml配置文件
YML文件格式是YAML(YAML Aint Markup Language)编写的文件格式。可以直观被电脑识别的格式。容易阅读,容易与脚本语言交互。可以支持各种编程语言(C/C++、Ruby、Python、Java、Perl、C#、PHP)。以数据为核心,比XML更简洁。扩展名为.yml或.yaml;XML ( Markup Language可扩展标记语言 )
官网地址:https://yaml.org/
语法:
- 大小写敏感
- 数据值前边必须有空格,作为分隔符
- 使用缩进表示层级关系
- 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- ''#" 表示注释,从这个字符一直到行尾,都会被解析器忽略。
- 数组和集合使用 “- ” 表示数组每个元素
yaml案例
对象(map):键值对的集合 :
person:
name: lisi
age: 31
addr: beijing
# ⾏内写法
person: {name: haohao, age: 31, addr: beijing}
数组:⼀组按次序排列的值
address:
- beijing
- shanghai
- guangzhou
# ⾏内写法
# ⾏内写法
address: [beijing,shanghai,guangzhou]
集合:
#集合中的元素是对象形式
animals:
- name: dog
age: 2
- name: tomcat
age: 3
- name: pig
age: 5
纯量:单个的、不可再分的值
msg1: 'hello \n world' # 单引忽略转义字符
msg2: "hello \n world" # 双引识别转义字符
配置引用:
name: lisi
person:
name: ${name}
所有写法:
person:
name: lisi
age: 31
city: beijing
address:
- beijing
- shanghai
- guangzhou
animals:
- name: dog
age: 2
- name: tomcat
age: 3
- name: pig
age: 5
修改项目配置时,默认配置查询方式(搜索栏搜索默认配置值)
可以通过修改application.properties或者application.yml来修改SpringBoot的默认配置
转换网站
在线yaml转properties-在线properties转yaml-ToYaml.com
3获取配置文件数据
方式1:@Value
#获取普通配置
@Value("${name}")
private String name;
#获取对象属性
@Value("${person.name}")
private String name2;
#获取数组
@Value("${address[0]}")
private String address1;
#获取纯量
@Value("${msg1}")
private String msg1;
使用springframework中的Evironment类,可以把application.yml中的文件数据封装的Evironment类中,简化代码
@Autowired
private Environment env;
System.out.println(env.getProperty("person.name"));
System.out.println(env.getProperty("address[0]"));
方式2:
@ConfigurationProperties
注意:prefix一定要写
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private int age;
private String[] address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String[] getAddress() {
return address;
}
public void setAddress(String[] address) {
this.address = address;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
4多环境配置文件
我们在开发Spring Boot应用时,通常同一套程序会被安装到不同环境,比如:开发dev、测试test、生产pro等。其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置⽂件,那么非常麻烦。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