SpringBoot配置文件详解


文章目录

  • SpringBoot配置文件详解
  • 一、SpringBoot配置文件分类
  • 二、SpringBoot配置-yaml(yml)基本语法
  • 1.概念
  • 2.语法特点
  • 三.SpringBoot配置-yaml数据格式
  • 四.SpringBoot配置-获取配置文件中的数据
  • 五.SpringBoot配置-项目内部配置文件加载顺序



一、SpringBoot配置文件分类

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。

  1. 默认配置文件名称:application.properties
  2. 在同一级目录下优先级为:properties>yml > yaml

例如:配置内置Tomcat的端口

properties:

server.port=8081

yml:

server: 
	port:8081

二、SpringBoot配置-yaml(yml)基本语法

1.概念

YAML(YML)是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入。

2.语法特点

• 大小写敏感
• 数据值前边必须有空格,作为分隔符
• 使用缩进表示层级关系
• 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的空格数目可能不同,导致层次混乱)。
• 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
• ‘’#" 表示注释,从这个字符一直到行尾,都会被解析器忽略。
代码如下(示例):

server:
  port: 8081
  address:
name: lp
msg1: 'hello \n world' #单引忽略转义字符
msg2: "hello \n world" #双引识别转义字符

三.SpringBoot配置-yaml数据格式

对象(map):
键值对的集合。

person:
  name: lp
# 行内写法
person:{name: lp}

纯量:
单个的、不可再分的值

msg2: "hello \n world" #双引识别转义字符

数组:一组按次序排列的值

address:
  - beijing
  - shanghai
# 行内写法
address: [beijing,shanghai]

四.SpringBoot配置-获取配置文件中的数据

1.使用@Value注解 常用

@Value("${name}")
 private String name;

2.Evironment

@Autowired
private Environment env;

System.out.println(env.getProperty("person.name"));

3. @ConfigurationProperties
注意:prefix一定要写

@Component
@ConfigurationProperties(prefix ="person")
public class Person{
privateString name;
privateint age;
private String[] address;
public Stringget Name(){
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 +'}';
}}

修改controller

@Autowired
private Person person;

System.out.println(person);
String[] address = person.getAddress();
for(String s : address){System.out.println(s);}

使用第三个获取数据时,会有警告,去掉报警提示:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

五.SpringBoot配置-项目内部配置文件加载顺序

加载顺序为下文的排列顺序,高优先级配置的属性会生效
• file:./config/:当前项目下的/config目录下
• file:./ :当前项目的根目录
• classpath:/config/:classpath的/config目录
• classpath:/ :classpath的根目录