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

Spring Boot 配置文件解析

一、前言

SpringBoot 使用一个全局的配置文件,配置文件名固定的;

·application.properties

·application.yml

配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;

YAMLYAML Ain't Markup Language

YAML A Markup Language:是一个标记语言

YAML isn't Markup Language:不是一个标记语言;

标记语言:

以前的配置文件;大多都使用的是 xxxx.xml文件;

YAML:以数据为中心,比jsonxml等更适合做配置文件;

二、YAML语法

 

 2.1基本语法

k:(空格)v: 表示一对键值对(空格必须有);

以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一层级的

属性和值也是大小写敏感 

2.2 值的写法

字面量: 普通的值(数字,字符串,布尔)

k: v: 字面直接来写

字符串默认不用加上单引号或者双引号

"":双引号,会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思

name: "zhangsan \n lisi": 输出; zhangsan 换行 lisi

'':单引号;不会转义特殊字符,特殊字符最终只是一个普通的字符串数据

name:' zhangsan \n lisi': 输出; zhangsan \n lisi 

2.3 对象、数组、Map(属性和值)(键值对)

 

在下一行来写对象的属性和值的关系;注意缩进

对象:(还是k: v的方式)


行内写法 (注意空格)

数组:

 

 

Map :

三、配置文件值注入 

3.1 使用@ConfigurationProperties将值注入到属性中

application.yml配置文件的内容:

server:port: 8082Person:last_name: "xiaobai \n xxx"age: 21birth: 2025/09/22boss: falsemaps: {k1: shuai,k2: ku}lists:-lisi-zhaoliudog: {name: Snax,age: 12}

 

javaBean:

我们可以导入配置文件处理器,以后编写配置就有提示了

<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional>
</dependency>

我们编写一个测试类, 

    @Autowiredprivate Person person;@Testpublic void TestPerson(){System.out.println(person);}

 发现yml里面配置的内容给到了Person类的属性了

3.2 @Value获取值和@ConfigurationProperties获取值比较

3.2.1松散绑定:

 

通过@ConfigurationProperties方法注入值

Person类里的LastName属性 和yml文件中的名字不一样,照样能够注入成功

但是@Value注解必须要精准匹配yml里的键值,才能注入值

 

3.2.2  SpEL表达式

@Value支持计算表达式

 

但是@ConfigurationProperties不支持 

3.2.3 数据校验

我们可以新加一个email属性,并对email属性进行依次数据校验

给email 赋值

分别用这两种注入方式查看结果:

 

@ConfigurationProperties报错了,说明支持数据校验

@Value 直接打印了结果,说明它根本没有数据校验这回事

 

3.2.4 复杂类型封装

复杂类型指的是 Map、对象等类型

我们是直接在yml文件里赋值的,@Vaue无法干这件事

 

3.2.3  @PropertySource @ImportResource @Bean

@PropertySource: 加载指定的配置文件

 

person.properties文件中的内容:

person.lastName=张三${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog
person.dog.age=15

运行一下:

说明person.properties文件里的相应值注入了Person里的属性中 

@ImportResource

导入Spring的配置文件,让配置文件里面的内容生效;

Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;

想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上

 在主程序中引入注解,使Bean.xml生效

配置一下Bean.xml吧

我们引入了alibaba中的Druid连接池 

此时我们去测试类里测试,连接池是否引入成功?

 

发现引入成功

还有一种方法,我们在Spring框架中想引入一个配置文件是这样引入的

    @org.junit.Testpublic void test() {ApplicationContext context = new AnnotationConfigApplicationContext(UserProxy.class);UserService userService = (UserService) context.getBean("userserviceimpl");userService.save();}

 

在这里我们用同样的思路验证是否引入了druid连接池

验证: 

引入成功! 

ok,今天小编就分享到这里,希望对你的学习有所帮助哦

http://www.dtcms.com/a/289156.html

相关文章:

  • 《深入C++多态机制:从虚函数表到运行时类型识别》​
  • 牛客NC14661 简单的数据结构(deque双端队列)
  • python学智能算法(二十六)|SVM-拉格朗日函数构造
  • 非广告!! 【实用工具推荐】自用多功能视频播放器-РotРlayer详细图文安装使用教程
  • 【安卓笔记】RecyclerView之ItemDecoration实现吸顶效果
  • codepen使用
  • FFmpeg 图片处理
  • 数据结构 | 栈:构建高效数据处理的基石
  • 【高等数学】第四章 不定积分——第三节 分部积分法
  • 【深度学习新浪潮】什么是robotaxi?
  • 【设计模式C#】享元模式(用于解决多次创建对象而导致的性能问题)
  • MPLS转发
  • windows C#-本地函数
  • Docker Compose 配置
  • docker compose 编排容器 mysql Springboot应用
  • 使用pytorch创建模型时,nn.BatchNorm1d(128)的作用是什么?
  • gradle关于dependency-management的使用
  • SpringBoot 整合 Langchain4j 实现会话记忆存储深度解析
  • OpenCV 入门知识:图片展示、摄像头捕获、控制鼠标及其 Trackbar(滑动条)生成!
  • 【LeetCode刷题指南】--反转链表,链表的中间结点,合并两个有序链表
  • Day25| 491.递增子序列、46.全排列
  • SQL Server(2022)安装教程及使用_sqlserver下载安装图文
  • redis-plus-plus安装与使用
  • [BUG]关于UE5.6编译时出现“Microsoft.MakeFile.Targets(44,5): Error MSB3073”问题的解决
  • 30天打牢数模基础-SVM讲解
  • Facebook 开源多季节性时间序列数据预测工具:Prophet 快速入门 Quick Start
  • UE5多人MOBA+GAS 26、为角色添加每秒回血回蓝(番外:添加到UI上)
  • Go并发聊天室:从零构建实战
  • Mysql(事务)
  • 30个常用的Linux命令汇总和实战场景示例