Springboot配置文件类型及读取配置文件配置
1.Springboot配置文件
Springboot是约定大约配置的,许多的配置都提供了默认值,但如果我们需要覆盖默认值的话,我们可以通过在配置文件中添加配置来修改默认值。SpringBoot默认会从Resources目录下加载application.properties或application.yml/application.yaml文件
1.1.配置文件类型
- .yml
- .properties
在过去的开发中,一直使用的大多是.properties配置文件,这里主要讲解的是.yml配置文件
1.2.yml(yaml)配置文件
YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数 据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导 入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。
在yml语法中,相同缩进代表同一级别。
以mysql连接配置为例:
语法:key:[空格]value,需要注意的是,value不为空时value前有一个空格
mysql:
url: jdbc:mysql://localhost/springboot_demo?characterEncoding=utf8
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 123456
1.3.Springboot配置查找
Springboot中的配置这么多,怎么记得住呢?不用去记配置,当需要用到的时候可以查阅Springboot官方配置文档。
以下为部分配置截图:
1.4.配置举例
- application.yml
server.port=8082
server.servlet.context-path=demo
- application.properties
server:
port: 8082
servlet:
context-path: /demo
2.读取配置文件配置
2.1.@Value注解映射
- application.yml配置如下
person:
name: zhangsan
age: 18
- application.properties配置如下
person.name=zhangsan
person.age=18
- Controller里读取配置
@Controller
public class ReadConfigController {
@Value("${person.name}")
private String name;
@Value("${person.age}")
private Integer age;
@RequestMapping("/read")
@ResponseBody
public String read(){
return "springboot 访问成功! name="+name+",age="+age;
}
}
2.2.@ConfigurationProperties注解映射
通过注解@ConfigurationProperties(prefix=“配置文件中的key的前缀”)可以将配置文件中的配置自动与实体进行映
射
- application.yml配置如下
person:
name: zhangsan
age: 18
- application.properties配置如下
person.name=zhangsan
person.age=18
- 配置映射实体
@Conponent
@ConfigurationProperties(prefix = "person")
public class People{
private String name;
private Integer age;
// getter & setter
}
- Controller里读取配置
@Controller
public class ReadConfigController {
@Autowired
private People people;
@RequestMapping("/read")
@ResponseBody
public String read(){
return "springboot 访问成功! name="+people.name+",age="+people.age;
}
}
3.注意事项&踩坑
使用@ConfigurationProperties方式可以进行配置文件与实体字段的自动映射,但需要字段必须提供set方法才可以,而使用@Value注解修饰的字段不需要提供set方法