1.配置文件基本使用
使用.yml配置文件,在resources目录下新建application.yml文件
server:
port: 8081 #修改端口号
servlet:
context-path: /lk #端口号后需额外添加字符
#以上等同于application.properties的以下写法
#server.port=8081
#server.servlet.context-path=/zed
swagger:
title: SpringBoot学习
description: SpringBoot学习
version: 1.0.0
name: lk
url: https://pallcard.github.io
email: 1250585541@qq.com
注
- 其中空格有严格的要求
2.切换配置文件
在resources目录下新建application-dev.yml文件,application-prod.yml文件
//文件目录
resources|-
application.yml
application-dev.yml
application-prod.yml
其中application.yml来切换配置文件
spring:
profiles:
active: dev
激活文件选择
- 使用上述application.yml来设置
- 使用java -jar ***.jar --spring.profiles.active=dev;
- IDEA中可以如下设置
3.配置文件使用
- 单值注入 (.yml中值若用双引号,转义字符会转义)
//.yml中
person:
name: zhangsan \n lisi
name2: 'zhangsan \n lisi'
name3: "zhangsan \n lisi"
age: 18
boss: false
//使用
@Value("${person.name}")
private String name;
@Value("${person.name2}")
private String name2;
@Value("${person.name3}")
private String name3;
@Value("${person.age}")
private String age;
@Value("${person.boss}")
private String boss;
- 批量注入
//application.yml
student:
name: lk
age: 23
boss: false
birth: 1997/1/1
maps: {k1: v1, k2: v2}
lists:
- 张三
- 李四
dog:
name: 小黑
age: 2
// pojo.Student
@ConfigurationProperties(prefix = "student")
@Component
@Data
public class Student {
private String name;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String, Object> maps;
private List<String> lists;
private Dog dog;
}
// pojo.Dog
@Data
public class Dog {
private String name;
private Integer age;
}
//值注入
@Autowired
private Student student;
注
- 将配置文件中配置的每一个属性的值,映射到这个组件中
- @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
- prefix = “person”:配置文件中哪个下面的所有属性进行一一映射
- 只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能;
- @Data是一个插件,免去了getter/setter和toString这些繁琐的东西
4.两种注入区别
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL: #{} | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
松散语法绑定:last_name = last-name = lastName 他们取的值都是相同的