文章目录
一、springboot三种配置文件
1、默认配置文件properties格式
我们可以在配置文件里面修改相关配置,你可以参考springboot配置文件官方的文档介绍,看可以修改哪些配置。这里以端口号为例。修改默认端口号,直接在application.properties配置文件中修改。直接输入server.port=80
就修改好了。properties格式文件修改没有太高的格式要求,直接用键值对形式key=value就行了
2、yml格式配置文件
yml格式格式要求:
- 注解用 #表示
- 大小写敏感
- 属性值前面要加上空格
- 属性层级关系用空格缩进表示
例如我要修改端口号为81,具体格式如下:
数组格式配置:
hobby:
- c
- java
- python
# 或者
hobbys: [c,java,python]
对象数组:
users:
- name: cx
age: 18
- name: ls
age: 20
# 或者
users1: [{name: cx,age: 18},{name: ls,age: 20}]
3、yaml格式配置文件
yaml配置文件格式和yml一样。
4、配置文件加载优先级
properties>yml>yaml
如果三种配置文件都存在,有相同的属性配置,优先级满足如上配置。如果没有重复属性,yml与yaml里面的配置信息也是会被加载的。
二、配置文件数据读取
1、单一数据读取
直接在属性上面加上 @Value("${city}")
注解,Value里面写的是spel表达式,需要注入什么属性就用spel表达式注入。例如我注入city属性和hobby里面的第二个索引格式如下:
@RestController
public class UserController {
@Value("${city}")
private String city;
@Value("${hobby[1]}")
private String hobby;
@RequestMapping("/testBoot")
public String testBoot(){
return "city=" + city +"; hobby=" + hobby;
}
}
2、变量引用
用spel表达式+拼接属性
users:
- name: cx
age: 18
hobby: ${hobby[1]}
- name: ls
age: 20
hobby: ${hobby[2]}andjava
3、配置文件全部变量引用
全部变量引用类型要用Environment类型,最后还要用@Autowired注解注入。
@Autowired
private Environment evn;
@RequestMapping("/testBoot")
public String testBoot(){
return "hobbies:"+evn.getProperty("hobbies[0]");
}
4、引用型数据
- 创建与配置属性相同的实体类
- @Component注解加载实体类带spring容器
- @ConfigurationProperties(prefix = “user”)注解实体类与配置文件联系
- @Autowired注入属性
@Component
@ConfigurationProperties(prefix = "user")
public class User {
private String name;
private Integer age;
private String hobby;
@Autowired
private User user;