SpringBoot的配置文件
SpringBoot配置文件类型
SpringBoot配置文件类型和作用:
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,
就可以使用application*.properties或者application*.yml(application*.yaml)进行配置。
SpringBoot默认会从Resources目录下加载application*.properties或application*.yml(application*.yaml)文件
application*.yml配置文件:
YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的数据序列化格式,
并且容易被人类阅读,容易和脚本语言交互,可以被支持YAML库的不同的编程语言程序导入,
比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。
YML文件的扩展名可以使用.yml或者.yaml。
yml配置文件的语法:
配置普通数据
语法: key: value 注意:value之前有一个空格
配置对象数据
语法:
key:
key1: value1
key2: value2
或者:
key: {key1: value1,key2: value2}
注意:key1前面的空格个数不限定,在yml语法中,相同缩进代表同一个级别
配置Map数据
和上面对象的写法一样
配置数组(List、Set)数据
语法:
key:
- value1
- value2
或者:
key: [value1,value2]
集合中的元素是对象形式:
student:
- name: zhangsan
age: 18
score: 100
- name: lisi
age: 28
score: 88
注意:value1与 - 之间存在一个空格
SpringBoot配置信息的查询:
SpringBoot的配置文件,主要的目的就是对配置信息进行修改的,但在配置时的key从哪里去查询呢?我们可以查阅SpringBoot的官方文档
https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#common-application-properties
配置文件与配置类的属性映射方式:
1.使用注解@Value映射
通过@Value注解将配置文件中的值映射到一个Spring管理的Bean的字段上
application.yml配置如下:
person:
name: zhangsan
age: 18
测试:
@RestController public class DemoController { @Value("${person.name}") private String name; @Value("${person.age}") private Integer age; @RequestMapping("/config") public String config() { return "name:" + name + " age:" + age; } }
2.使用注解@ConfigurationProperties映射:
通过注解@ConfigurationProperties(prefix="配置文件中的key的前缀")可以将配置文件中的配置自动与实体进行映射
在启动类需要添加 @EnableConfigurationProperties(DemoController2.class),否则 @ConfigurationProperties(prefix = "person") 会出现红色波浪线警告;另外一种方式是在实体类上添加@Component注解(推荐)。
application.yml配置如下:
person:
name: zhangsan
age: 18
测试:
@RestController @ConfigurationProperties(prefix = "person") public class DemoController2 { private String name; private Integer age; @RequestMapping("/config2") public String config() { return "name:" + name + " age:" + age; } public void setName(String name) { this.name = name; } public void setAge(Integer age) { this.age = age; } }
注意:使用@ConfigurationProperties方式可以进行配置文件与实体字段的自动映射,
但需要字段必须提供set方法才可以,而使用@Value注解修饰的字段不需要提供set方法
使用此注解会提示
可以在pom文件中配置以下执行器,用于idea工具自动识别,不配置也不影响使用
<!--@ConfiguaritionProperties的执行器的配置--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>