SpringBoot全局配置文件
SpringBoot使用一个application.properties或者application.yaml的文件作为全局配置文件。
application.properties配置文件
application.properties文件中定义springboot项目的相关属性
注入系统变量,系统属性等
server.address=80
server.port=8080
server.datasource.driver-class-name=com.mysql.jdbc.Driver
@ConfigurationProperties注入自定义属性
# Pet类
public class Pet {
private String type;
private String name;
//属性getXX()和setXX()方法
//toString()方法
}
# Person类
@Component //用于将Person类作为Bean注入到Spring容器中
@ConfigurationProperties(prefix = "person") //将配置文件中以person开头的属性注入到该类中
public class Person {
private int id; //id
private String name; //名称
private List hobby; //爱好
private String[] family; //家庭成员
private Map map;
private Pet pet; //宠物
//属性getXX()和setXX()方法
//toString()方法
}
在Person类中的
- @Component注解用于将Person类作为Bean注入到Spring容器中,只有这样才能通过@ConfigurationProperties注解赋值
- @ConfigurationProperties(prefix = "person")注解是将配置文件(applications.properties)中以person开头的属性值通过setter方法注入到实体类中。
在application.properties文件中添加
#对实体类对象Person进行属性配置
person.id=1
person.name=tom
person.hobby=play,read,sleep
person.family=father,mother
person.map.k1=v1
person.map.k2=v2
person.pet.type=dog
person.pet.name=kity
以上配置是对Person类的相关属性进行配置,这些配置会通过@ConfigurationProperties(prefix = "person")注解注入到bean(Person对象)的对应属性中(通过setxx()方法)。
@Value注入属性
@Component
public class Person {
@Value("${person.id}")
private int id;
}
- @Component注解用于将Person类作为Bean注入到Spring容器中
- @Value注解不仅可以将配置文件的属性注入Person的id属性,还可以直接给id属性赋值,可以免去setxx()方法,使用此方法仅支持对普通类型属性赋值。
对比
对比点 | @ConfigurationProperties | @Value |
---|---|---|
底层框架 | Spring Boot | Spring |
功能 | 批量注入配置文件中的属性 | 单个注入 |
属性setXX()方法 | 需要 | 不需要 |
复杂类型属性注入 | 支持 | 不支持 |
松散绑定 | 支持 | 不支持 |
JSR303数据校验 | 支持 | 不支持 |
SpEL表达式 | 不支持 | 支持 |
application.yaml配置文件
YAML文件格式是Spring Boot支持的一种JSON超集文件格式,相较于传统的Properties配置文件,YAML文件以数据为核心,是一种更为直观且容易被电脑识别的数据序列化格式。
- 普通数据类型
server:
port: 8080
path: /hello
- 数组等集合类型
# 缩进式写法
person:
hobby:
- play
- read
- sleep
# 行内式写法
person:
hobby: [play,read,sleep]
- map集合和对象
person:
map:
k1: v1
k2: v2
person:
map: {k1: v1, k2 :v2}
示例
#对实体类对象Person进行属性配置
person:
id: 2
name: 张三
hobby: [sing,read,sleep]
family: [father,mother]
map: {k1: v1,k2: v2}
pet: {type: cat, name: tom}
以上配置属性会通过@ConfigurationProperties(prefix = "person")注解注入到Person实体类的对应属性中。
本文来自博客园,作者:天空之城com,转载请注明原文链接:https://www.cnblogs.com/lzmhc/p/18598081