文章目录
四、SpringBoot的配置文件
4.1 SpringBoot配置文件类型
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。
SpringBoot默认会从Resources目录下加载application.properties
或application.yml(application.yaml)
文件
其中,application.properties文件是键值对类型的文件,之前一直在使用,所以此处不在对properties文件的格式进行阐述。除了properties文件外,SpringBoot还可以使用yml文件进行配置,下面对yml文件进行讲解。
YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。
YML文件的扩展名可以使用.yml或者.yaml。
示例如下:
server:
port: 8083
#对象的配置
person:
name: zhangsan
age: 18
addr: beijing
#行内对象配置
person2: {name: zhangsan,age: 18,addr: beijing}
#数组的配置
city:
- beijing
- tianjing
- shanghai
- guangzhou
citys: [beijing,tianjing,shanghai,guangzhou]
#数组内容是对象
students:
- name: tom
age: 18
addr: beijing
- name: lucy
age: 17
addr: shanghai
student: [{name: tome,age: 18,addr: beijing},{name: lucy,age: 17,addr: shanghai}]
- 注意:value1与之间的 - 之间存在一个空格
4.2 配置文件与配置类的属性映射方式
4.2.1 使用注解@Value映射
我们可以通过@Value注解将配置文件中的值映射到一个Spring管理的Bean的字段上
@Controller
public class StartController {
@Value("${person.name}")
private String name;
@Value("${person.addr}")
private String addr;
@RequestMapping("/start3")
@ResponseBody
public String start3(){
return "name:"+name+","+"addr:"+addr;
}
}
4.2.2 使用注解@ConfigurationProperties映射
@Controller
@ConfigurationProperties(prefix = "person")
public class Start2Controller {
private String name;
private String age;
private String addr;
@RequestMapping(value = "/start4")
@ResponseBody
public String start4(){
return "name:"+name+","+"addr:"+addr+","+"age:"+age;
}
public void setName(String name) {
this.name = name;
}
public void setAge(String age) {
this.age = age;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
注意:使用@ConfigurationProperties方式可以进行配置文件与实体字段的自动映射,但需要字段必须提供set方法
才可以,而使用@Value注解修饰的字段不需要提供set方法
注意 在使用 @ConfigurationProperties 注解之前要先引入maven依赖,引入之后程序就会自动扫描到 yml文件里配置过的值并给出单词提示。
<!-- @ConfigurationProperties注解的执行器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>