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实体类的对应属性中。

posted @   天空之城com  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 易语言 —— 开山篇
点击右上角即可分享
微信分享提示