配置文件:
SpringBoot提供了两种配置文件类型:properties和yml(yaml)。
在同一级目录下优先级为:properties → yml → yaml
默认配置文件名称:application
yaml全称Ain't Markup Language。YAML是一种直观的能够被电脑识别的数据序列化格式,并且容易被人阅读,容易和脚本语言交互的,可以被支持YAML库的不同编程语言程序导入,比如C/C++,Ruby,Python,Java,Perl,PHP,C#等。YML文件是以数据为核心的,比传统的xml更加简洁,扩展名可以使用.yml或.yaml
properties、xml和yml的区别
properties:
server.port = 8080
server.address = 127.0.0.1
xml:
<server>
<port>8080</port>
<address>127.0.0.1</address>
</server>
yml:简洁易懂
server:
port: 8080
address: 127.0.0.1
数据格式:
person:
name: xiao
#行内写法
person: {name: xiao}
#数组:
address:
-beijing
-shanghai
#行内写法
address: [beijing,shanghai]
#字符序列:
msg: 'hello \n world' #使用单引号忽略转移字符 此处不换行
msg: 'hello \n world' #使用双引号识别转义字符 此处/n表示换行
注意:
1.冒号后必须有空格(一个或多个都可以,建议一个即可)。
2.大小写敏感。
3.数据值前必须有空格,作为分隔符。
4.使用缩进表示层级。
5.缩进时不允许使用Tab键,只允许使用空格(不同系统Tab键对应的空格不同,有的操作系统为4个空格,有的操作系统为8个空格)。
6.缩进的空格数目不重要,只要相同的层级的元素左侧对齐即可。
7.可以用#代码进行注释,范围是一行。
读取配置内容的方式:
(1)@Value
@Value("${person.name}")
private String name;
@Value("${person.age}")
private int age;
(2)Environment
@Autowired
private Environment environment;
@RequestMapping("/hello")
public String hello(){
System.out.println(environment.getProperty("person.age"));
System.out.println(environment.getProperty("address[0]"));
}
(3)@ConfigurationProperties
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private int age;
}
profile
我们在开发SpringBoot应用时,通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。profile功能就是用来进行动态配置切换的。
(1)profile配置方式
多profile文件方式
application-dev.properties( application-dev.yml) 开发环境
application-test.properties(application-test.yml) 测试环境
application-pro.properties(application-pro.yml) 生产环境
yml多文档方式
(2)profile激活方式
配置文件: 在配置文件中配置:spring.profiles.active=dev
虚拟机参数: 在VM options指定:-Dspring.profiles.active=dev
命令行参数: java-jar xxx.jar --spring.profiles.active=dev