properties
properties
配置文件是一种常见的配置文件格式,它遵循Java属性文件的规范。这种文件通常用于存储配置信息,如数据库连接信息、服务器地址等。properties
文件以键值对的形式存储数据,每行一个属性,键和值之间用等号(=
)分隔,行尾可以包含注释,注释以井号(#
)或感叹号(!
)开头。
基本语法:
- 键值对:每行一个属性,键和值之间用等号(
=
)分隔。 - 注释:以
#
或!
开头的行被视为注释,会被忽略。 - 空格:键或值前后的空格会被忽略。
- 特殊字符:如果值中包含特殊字符(如空格、等号等),需要使用反斜杠(
\
)进行转义。 - 编码:通常使用ISO 8859-1编码,也可以使用Unicode字符。
例如:配置数据库
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
获取properties配置文件中的值
例如配置文件中的内容为:
spring.application.name=SpringConfigs
my.key=test
my.key2=5
my.key3=true
使用@Value注解
@RestController
@RequestMapping("/test")
public class ConfController {@Value("${my.key}")private String myKey;@Value("${my.key2}")private Integer myKey2;@Value("${my.key3}")private Boolean myKey3;@RequestMapping("/read")public String readValue1() {return "从配置文件中读取信息" + myKey;}@PostConstructpublic void readValue2() {System.out.println("从配置文件中读取配置信息" + myKey);}@PostConstructpublic void readValue3() {System.out.println("从配置文件中读取配置信息" + myKey2);}@PostConstructpublic void readValue4() {System.out.println("从配置文件中读取配置信息" + myKey3);}}
@PostConstruct
注解:它属于Java EE 5的规范,被用来标记在初始化方法上。这个注解的方法会在依赖注入完成后,构造函数执行完毕后被自动调用。它通常用于执行一些初始化操作,比如打开数据库连接、初始化一些资源等。
yml/yaml
YAML(YAML Ain’t Markup Language)是一种用于配置文件的数据序列化格式。它易于阅读,并且经常被用于配置文件和数据交换。在Spring框架中,YAML文件通常以.yml
或.yaml
为后缀。Spring Boot框架特别支持YAML格式的配置文件,并且提供了很多便利的方式来读取和使用这些配置。
基本语法
- 键值对:使用冒号(
:
)分隔键和值。 - 缩进:使用空格进行缩进,通常是两个空格,表示层级关系。
- 列表:使用短横线(
-
)表示列表中的项。 - 多行字符串:可以使用
|
或>
来表示多行字符串。 - 注释:以
#
开头的行被视为注释。
例如:配置数据库时,properties配置文件内容如下
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
上述配置在yml中的表示为
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=falseusername: rootpassword: root
获取yaml配置文件中的值
@RestController
public class ymlController {@Value("${spring.datasource.url}")private String url;@Value("${spring.datasource.username}")private String username;@PostConstructpublic void readValue() {System.out.println(url);}}
yml配置不同数据类型及null
# 字符串
string.value: hello# 布尔值,
boolean.value: true
boolean.value: false
# 浮点数
float.value: 3.14
# ~表示null
null.value: ~
# 空字符串,可以什么都不加,也可以加个引号
empty.value: ''
配置对象
例如,配置文件内容如下
student:id: 1name: zhangsanage: 18
如果想从配置文件中读取id、name、age,需要使用@ConfigurationProperties注解
@Configuration
@ConfigurationProperties(prefix = "student")
public class Student {private Integer id;private String name;private Integer age;
}
加上注解后,Spring就会从配置文件中读取并且赋值给Student类的属性
配置集合
配置文件如下:
student:id: 1name: zhangsanage: 18databases:- mysql- sqlServer- redis
databases就是一个集合,可以使用List接收
@Data
@Configuration
@ConfigurationProperties(prefix = "student")
public class Student {private List<String> databases;
}
配置Map
配置文件内容:
myMap:k1: v1k2: v2
在Java中使用Map接收
@Data
@Configuration
@ConfigurationProperties(prefix = "student")
public class Student {private Map<String,String> myMap;
}