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

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.xdnf.cn/news/15860.html

相关文章:

  • SpringBoot集成MyBatis的SQL拦截器实战
  • Java学习第六十部分——JVM
  • [硬件电路-52]:什么是模拟电路与数字电路;它们的共同点、核心差异点(原理、目标、关注点等)以及它们如何相互转化
  • LeetCode 852:山脉数组的峰顶索引解析与实现
  • STM32CubeMX的一些操作步骤的作用
  • 7-20 关于mysql
  • 网络安全隔离技术解析:从网闸到光闸的进化之路
  • 【硬件】GalaxyTabPro10.1(SM-T520)刷机/TWRP/LineageOS14/安卓7升级小白向保姆教程
  • RxSwift-事件属性
  • JVM-Java
  • LINUX(三)文件I/O、对文件打开、读、写、偏移量
  • 股票及金融笔记
  • 使用Qt6 QML/C++ 和CMake构建海康威视摄像头应用(代码开源)
  • 双8无碳小车“cad【17张】三维图+设计说名书
  • 【橘子分布式】gRPC(编程篇-下)
  • 嵌入式硬件篇---机械臂运动学解算(3自由度)
  • 机器学习-数据预处理
  • 【机器学习【9】】评估算法:数据集划分与算法泛化能力评估
  • 物联网安装调试-继电器
  • Java设计模式之行为型模式(备忘录模式)实现方式与测试用例
  • 【Unity3D实例-功能-移动】角色移动-通过WSAD(CharacterController方式)
  • 第四次作业
  • haproxy七层代理
  • 嵌入式硬件篇---继电器
  • C#.NET EFCore.BulkExtensions 扩展详解
  • 物联网安装调试-温湿度传感器
  • 分布式文件系统04-DataNode海量数据分布式高可靠存储
  • python中读取 Excel 表格数据
  • 【数据结构】揭秘二叉树与堆--用C语言实现堆
  • 【MySQL】索引中的页以及索引的分类