SpringBoot读取配置文件

一、简介

在日常开发使用 SpringBoot 框架时,经常有一些配置信息需要放置到配置文件中,我们需要手动读取这些配置到应用中进行一些逻辑,这里整理了一些常用读取配置的方法,简单介绍一下。

1、SpringBoot 中常用读取配置方法

  • 使用 @ConfigurationProperties 注解读取配置

配置方便,支持赋值复杂类型

  • 使用 @Value 注解读取配置

使用灵活,方便对读取数值进行定制化处理,可赋值给静态化变量

2、 @ConfigurationProperties和@Value的区别

二者区别@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(松散语法)支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持
赋值静态化属性据说可以,笔者未成功支持

二、使用 @ConfigurationProperties 读取配置

application.yml配置文件内容:

jiug:
  name: keffett
  age: 18
  school: 淮北师范大学,五河县第二中学
  technicalList :
    - name: 驾驶证
      grade: C1
    - name: 计算机
      grade: 二级

使用@ConfigurationProperties对配置属性进行赋值

@Data
@Configuration
@ConfigurationProperties(prefix = "jiug")
public class ConfigJiug {
		
    private String name ;
    // JSR303数据校验
    @NotNull
    @Min(0)
    private int age ;
    // 默认值
    private String loc = "中国" ;
    // list
    private List<String> school ;
    // list对象
    private List<Technical> technicalList ;

}
@Data
class Technical {
    private String name;
    private String grade;
}

要使用JSR 303校验,需要在Spring Boot应用程序的依赖中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-validation</artifactId>
</dependency>

三、使用 @Value 读取配置

application.yml配置文件内容:

jiug:
  name: keffett
  age: 18
  declaration: 认识世界,
  school: 淮北师范大学,五河县第二中学

使用 @Value 读取配置文件

@Component
public class ConfigConstant {

    @Value("${jiug.name}")
    private String name ;
    
    @Value("${jiug.age}")
    private int age = 24 ;
    
    // 设置默认值
    @Value("${jiug.loc:中国}")
    private String loc;
    
    // 使用 SpEL 表达式
    @Value("#{configJiug.age > 18 ? 'adult' : 'child'}")
    private String status;
    
    // 赋值到静态变量
    public static String declaration ;
    @Value("${jiug.declaration}")
    public void setDeclaration(String declaration) {
        ConfigJiug.declaration = declaration;
    }

    // list
    private List<String> school ;
    @Value("${jiug.school}")
    public void setSchool(String school) {
        this.school = Arrays.asList(school.split(","));
    }

    // list对象 不支持,可以配置json串,然后在set方法中解析
    
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

必成公

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值