当前位置: 首页 > news >正文

SpringBoot读取配置文件

目录

  • 一、简介
    • 1、SpringBoot 中常用读取配置方法
    • 2、 @ConfigurationProperties和@Value的区别
  • 二、使用 @ConfigurationProperties 读取配置
  • 三、使用 @Value 读取配置

一、简介

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

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

  • 使用 @ConfigurationProperties 注解读取配置

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

  • 使用 @Value 注解读取配置

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

2、 @ConfigurationProperties和@Value的区别

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

二、使用 @ConfigurationProperties 读取配置

application.yml配置文件内容:

jiug:name: keffettage: 18school: 淮北师范大学,五河县第二中学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 = "中国" ;// listprivate 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: keffettage: 18declaration: 认识世界,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;}// listprivate List<String> school ;@Value("${jiug.school}")public void setSchool(String school) {this.school = Arrays.asList(school.split(","));}// list对象 不支持,可以配置json串,然后在set方法中解析}
http://www.lryc.cn/news/37357.html

相关文章:

  • 51驱动NRF24L01通信,NRF24L01与TTL转NRF24L01模块通信
  • C++友元
  • MySQL内置函数
  • mysql数据库之innodb存储引擎架构之内存架构
  • Vue:(三十五)路由vue-router
  • Dynabook笔记本电脑无法开机怎么重装新系统?
  • React Native基础知识点
  • nginx 平滑升级
  • 数据结构——链表OJ题目讲解(2)
  • GitHub上线重量级分布式事务笔记,再也不怕面试官问分布式了
  • C++语法规则1(C++面向对象 )
  • Web漏洞-CSRF漏洞
  • Python3-面向对象
  • 拐点!新能源车交付均价首次「低于」燃油车,智能电动成新爆点
  • JavaScript String 字符串对象实例合集
  • 实习生培养计划
  • 【服务器管理】Wordpress服务器内存占用太高(优化方案详解)
  • 【ECCV 2022】76小时动捕,最大规模数字人多模态数据集开源
  • 联合解决方案 | 亚信科技AntDB数据库携手浪潮K1 Power赋能关键行业数字化转型,助力新基建
  • Android 单元测试问题总结(Robolectric+JUnit)
  • 专项攻克——二叉树
  • PACS系统源码 PACS源码 三维重建PACS源码
  • 利用Mysql存储过程造百万级数据
  • Vue2组件之间的传值通信
  • Spring Boot官方例子《Developing Your First Spring Boot Application》无法运行
  • 数据结构(3)— 线性表之顺序存储详解介绍(含代码)
  • ChatGPT正当时,让我们一起深耕智能内容生成和智能内容增强领域
  • 天梯赛训练L1-019 (谁先倒)
  • MySQL DQL语句基础(一)
  • ccc-pytorch-LSTM(8)