springboot配置文件常用知识点
一、配置文件
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
- application.properties
- application.yml
1、yml语法格式
## 基本格式
server:
port: 8080
## 值的写法格式
user:
name: zhangsan
age: 20
## 或者采用行内写法
user: {name: zhangsan,age: 20}
## 数组写法
pets:
- cat
- dog
- pig
## 或者采用行内写法
pets: [cat,dog,pig]
yml文件注意点
- 1."":双引号,会转译字符串里的特殊字符:如 /n 会被转译成换行
- 2.’’:单引号,不会转译: 如 /n 输出就是 /n
2、配置文件注入
复杂配置文件样式
person:
lastName: hello
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: 12}
lists:
‐ lisi
‐ zhaoliu
dog:
name: 小狗
age: 12
java引入方式
/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties(prifix=""):默认从全局配置文件中获取
* @PropertySource(value={classpath: 某地址}) :指定需要映射的配置文件,无此注解默默认映application.yml
*/
@PropertySource(value = {"classpath: person.yml"})
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}
除此以外,还有@Value引入方式
//@Value("${person.last‐name}")
private String lastName;
//@Value("#{11*2}")
private Integer age;
//@Value("true")
private Boolean boss;
3、配置文件注入值校验
详见代码样例
@Component
@ConfigurationProperties(prefix = "person")
@Validated // 开启校验
public class Person {
@Email // 下面的email属性必须是邮箱格式
private String email;
@NotNull
@Range(min = 20, max = 50, message = "age应该在[20,50]之间")
private Integer age;
@NotEmpty(message = "书名不能为空")
@Length(max = 100, message = "书名不能超过100")
private Boolean bookName;
private Date birth;
private Map<String,Object> maps;
@ListNotHasNull(message = "List 中不能含有null元素")
private List<Object> lists;
}
4、配置文件占位符
概念:可以使用占位符来获取之前配置的值
spring:
port: 8080
##如下面的配置需用到spring配置的端口号,且始终需要与端口号一致,可以使用占位符来实现
samething:
instance-id: localhost:${server.port}
## 也可以指定随机值
person:
name: ${random.uuid}
age: ${random.int}
birth:
5、Profile文件
- 1.用途:在一个模块中,针对不同的运行环境(开发、测试、生成)使用不用的配置文件,文件名格式application-{prifile}.properties/yml;项目默认是使用application.yml
- 2.yml文件支持多文档块方式,用三个英文下“-”的行区分
server:
port: 8080
spring:
profiles:
active: dev
---
server:
port: 8081
spring:
profiles:
active: test
---
server:
port: 8083
spring:
profiles:
active: prod
6、配置文件加载位置顺序
springboot会默认按照从上往下顺序在以下位置扫码application.yml或者application.properties文件
- file:./config/
- file:./
- classpath:/config/
- classpath:
我们还可以通过spring.config.location来改变默认的配置文件位置
项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默
认加载的这些配置文件共同起作用形成互补配置;
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties
7、命令行启动形式
所有的配置都可以在命令行上进行指定:
## 指定启动端口号
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087
## 指定启动映射的配置文件
java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev