springboot项目中默认的配置文件是application.properties;
1.yml文件规则
- 树状结构,结构清晰
- 不支持tab缩进
- 可以使用”_”或”-“消协字母代替大写字母;如userName 与user-name, user_name含义是一样的(宽松绑定原则 relaxed binding); key: value格式书写,value前面有个空格
2. 数据格式
- 普通的值(数字,字符串,布尔)如: 字符串默认不用加上单引号或者双引号; “”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思,name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi ‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据,name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
1
2
3port: 123
name: abc
flag: true - 对象、Map(属性和值)如:
1
2
3
4
5
6
7#k: v:在下一行来写对象的属性和值的关系;注意缩进(不支持tab,使用空格)
server:
port: 8123
tomcat:
uri-encoding: utf-8
servlet:
context-path: /app - 数组(list, set)
1
2
3
4#用- 值表示数组中的一个元素
hands:
- left
- right
3. 读取方式
@Value注解
1
2server:
port: 80811
2@Value("${server.port}")
public String port;此处的port所在的类需要是一个组件,如果是实体类需要加上@Component
@ConfigurationProperties
需要一个JavaBean 来专门映射配置的话,我们一般会使用@ConfigurationProperties来读取.
使用的使用需要@EnableConfigurationProperties注解让类被springboot扫描到;
1
2
3
4
5
6
7spring:
datasource:
druid:
url: jdbc:mysql://localhost:3307/app?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8&useLegacyDatetimeCode=false
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root1
2
3
4
5
6
7
8
9
10
11//prefix 指定前缀
public class MyDataSourceProperties {
private String type;
private String driverClassName;
private String url;
private String username;
private String password;
//省略getter setter方法
}- 前缀定义了哪些外部属性将绑定到类的字段上
- 根据 Spring Boot 宽松的绑定规则,类的属性名称必须与外部属性的名称匹配
- 我们可以简单地用一个值初始化一个字段来定义一个默认值
- 类本身可以是包私有的
- 类的字段必须有公共 setter 方法
Environment
Spring Environment bean
1
2
3
4
5
6
7
8
9
10
11
12
public class TestC {
private Environment env;
public String index() {
return "environment : "+ env.getProperty("spring.datasource.druid.url");
}
}