SpringBoot 配置⽂件

使⽤配置⽂件,可以使程序完成⽤⼾和应⽤程序的交互,或者应⽤程序与其他应⽤程序的交互

SpringBoot配置⽂件

SpringBoot⽀持并定义了配置⽂件的格式, 也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的 ⽬的. 很多项⽬或者框架的配置信息也放在配置⽂件中,⽐如:
• 项⽬的启动端⼝ • 数据库的连接信息(包含⽤⼾名和密码的设置)
• 第三⽅系统的调⽤密钥等信息
• ⽤于发现和定位问题的普通⽇志和异常⽇志等.
配置⽂件的格式 Spring Boot 配置⽂件有以下三种:
• application.properties
• application.yml
• application.yaml
yml为yaml的简写,实际开发中出现频率最⾼. yaml和yml的使⽤⽅式⼀样
特殊说明
1. 理论上讲 properties 和 .yml 可以并存在于⼀个项⽬中,当并存时,两个配置都会加载.如果配置⽂件内容有冲突,则以 .properties 为主 .properties 优先级更⾼.
2. 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种 统⼀的配置⽂件格式,这样可以更好的维护(降低故障率).
properties 配置⽂件是最早期的配置⽂件格式,也是创建SpringBoot项⽬默认的配置⽂件

properties 基本语法

properties 是以键值的形式配置的,key和value之间是以"="连接的,如:

配置项⽬端⼝号

server.port=8080

配置数据库连接信息

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb? characterEncoding=utf8&useSSL=false spring.datasource.username=root spring.datasource.password=root

读取配置⽂件

如果在项⽬中,想要主动的读取配置⽂件中的内容,可以使⽤ @Value 注解来实现。
@Value 注解使⽤"

properties 配置如下:

最终执⾏效果:

properties 缺点分析
properties 配置是以key-value的形式配置的,如下图所⽰:
从上述配置key看出,properties配置⽂件中会有很多的冗余的信息,⽐如这些:
yml基本语法
yml是树形结构的配置⽂件,它的基础语法是"key:value".
key和value之间使⽤英⽂冒号加空格的⽅式组成,空格不可省略
基础语法如下:
使⽤yml连接数据库 yml使⽤⽰例:
yml和properties连接数据库的配置对⽐

yml配置不同数据类型及null

yml配置读取

yml读取配置的⽅式和properties相同,使⽤@Value 注解即可,实现代码如下:
yml配置:
配置对象 我们还可以在yml中配置对象,如下配置:

或者是使⽤⾏内写法(与上⾯的写法作⽤⼀致):

student: {id: 1,name: Java,age: 18}

这个时候就不能⽤@Value 来读取配置中的对象了,此时要使⽤另⼀个注解 @ConfigurationProperties 来读取,具体实现如下:

调⽤类的实现如下:

运⾏结果如下:

配置集合
配置⽂件也可以配置list集合,如下所⽰:
集合的读取和对象⼀样,也是使⽤ @ConfigurationProperties 来读取的,具体实现如下:
访问集合的实现如下:
配置Map
配置⽂件也可以配置map,如下所⽰:
Map的读取和对象⼀样,也是使⽤ @ConfigurationProperties 来读取的,具体实现如下:
打印类的实现如下:

yml优缺点

优点:
1. 可读性⾼,写法简单, 易于理解
2. ⽀持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态.
3. ⽀持更多的编程语⾔,不⽌是Java中可以使⽤,在Golang,Python,Ruby,JavaScript中也可以使⽤ 缺点: 1. 不适合写复杂的配置⽂件
总结
1. properties 是以key=value的形式配置的键值类型的配置⽂件,yml使⽤的是树形配置⽅式.
2. 读取配置⽂件内容,使⽤ @Value 注解,注解内使⽤" ${} "的格式读取.
3. yml层级之间使⽤换⾏缩进的⽅式配置,key和value之间使⽤":"(英⽂冒号)加空格的⽅式设置,并 且空格不可省略.
4. properties 为早期并且默认的配置⽂件格式,其配置存在⼀定的冗余数据,使⽤yml可以很好的解决 数据冗余的问题,但不适合复杂配置.
5. yml可以和properties共存,但⼀个项⽬中建议使⽤⼀种配置类型⽂件
相关推荐
苏三说技术几秒前
AI中四种向量数据库
后端
C+-C资深大佬21 分钟前
C++ 性能优化 专业详解
java·c++·性能优化
程序员老乔22 分钟前
Java 新纪元 — JDK 25 + Spring Boot 4 全栈实战(三):虚拟线程2.0,电商秒杀场景下的并发革命
java·开发语言·spring boot
weixin_4041576824 分钟前
Java高级面试与工程实践问题集(四)
java·开发语言·面试
cyforkk31 分钟前
Spring AOP 核心揭秘:ProceedingJoinPoint 与反射机制详解
java·python·spring
无限进步_35 分钟前
【C++】单词反转算法详解:原地操作与边界处理
java·开发语言·c++·git·算法·github·visual studio
wyiyiyi38 分钟前
【线性代数】对偶空间与矩阵转置及矩阵分解(Java讲解)
java·线性代数·支持向量机·矩阵·数据分析
你这个代码我看不懂42 分钟前
磁盘的存储原理
java
PyAIGCMaster1 小时前
开发了一个全自动接入wordpress的saas发文章的网站,记录一下如何实现,有需要的朋友联系。
java·开发语言·数据库
研究点啥好呢1 小时前
3月21日GitHub热门项目推荐|攻守兼备,方得圆满
java·c++·python·开源·github