【Spring】探秘 Spring Boot 配置文件:藏在代码背后的 “魔法配方”,一键激活项目超能力
前言
🌟🌟本期讲解关于Spring IOC&DI的详细介绍~~~
🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客
🔥 你的点赞就是小编不断更新的最大动力
🎆那么废话不多说直接开整吧~~
目录
📚️1.配置文件的作用
1.1Spring Boot配置文件
📚️2.配置文件的快速入手
📚️3.配置文件的格式
📚️4.properties 配置⽂件说明
4.1properties的基本语法
4.2配置文件的读取
4.3properties的缺点
📚️5.yml配置文件说明
5.1yml基础语法
5.2yml配置文件的读取
5.2.1配置不同类型的数据
5.2.2配置对象的读取
5.2.3配置列表的读取
5.2.4配置Map的读取
5.3yml的优缺点
📚️6.总结
📚️1.配置文件的作用
计算机上有数以千计的配置⽂件, 我们使⽤的绝⼤多数软件, ⽐如浏览器, 微信, Idea, 甚⾄电脑, ⼿机, 都离不开配置⽂件. 我们可能永远不会直接与其中的⼤部分⽂件打交道,但它们确实以不同的形式散落在我们的计算机上, ⽐如C:\Users, C:\Windows⽂件夹, 以及各种 *.config, *.xml ⽂件
配置文件:
配置⽂件主要是为了解决硬编码带来的问题, 把可能会发⽣改变的信息, 放在⼀个集中的地⽅, 当我们启动某个程序时, 应⽤程序从配置⽂件中读取数据, 并加载运⾏
其实,可以发现配置配置,可以想象成我们使用idea之前要进行环境的配置,其实我们在使用idea时,并没有和这些文件打交道,但是这些环境的配置在我们使用idea时默默的发挥作用;
1.1Spring Boot配置文件
SpringBoot⽀持并定义了配置⽂件的格式, 也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的⽬的.
很多项⽬或者框架的配置信息也放在配置⽂件中, ⽐如:
• 项⽬的启动端⼝
• 数据库的连接信息(包含⽤⼾名和密码的设置)
• 第三⽅系统的调⽤密钥等信息
• ⽤于发现和定位问题的普通⽇志和异常⽇志等.
项目的启动端口,由于springboot内置了Tomcat的服务器,默认的端口是8080,但是如果8080端口被占用后,就要重新配置这里的服务器端口;
📚️2.配置文件的快速入手
在idea中springboot项目中就存在这里的配置文件的操作项目:
注意:这里默认的就是properties,小编这里就是yml,后面小编会讲到
接下来我们直接改变这里的服务器端口号为:9090
代码如下:
server.port=9090
这里的意思就是:此时的端口号为9090,此时我们就直接访问进行验证;
访问的URL就是:http://127.0.0.1:8080/login.html;
可以看到此时就是无法进行8080端口服务器的访问了,那么此时我们将8080改成为9090,此时的界面如下:
可以看到此时就是拿到了我们这里的界面,可以发现此时配置文件就可以改变程序的某些配置,例如端口号,以及其他的对象这类的,后面有讲;
📚️3.配置文件的格式
Spring Boot 配置⽂件有以下三种:
• application.properties
• application.yml
• application.yaml
解释:yml 为yaml的简写, 实际开发中出现频率最⾼. yaml 和yml 的使⽤⽅式⼀样, 这里只讲yml⽂件的使⽤
当应⽤程序启动时, Spring Boot会⾃动从classpath路径找到并加载application.properties 和 application.yaml 或者 application.yml 文件
以下就是两种配置文件的格式项目文件
注意:
1. 理论上讲 .properties 和 .yml 可以并存在于⼀个项⽬中,当 .properties 和 .yml并存时,两个配置都会加载. 如果配置⽂件内容有冲突, 则以 .properties 为主, 也就是.properties 优先级更⾼.
2. 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种
统⼀的配置⽂件格式,这样可以更好的维护(降低故障率
当然实践出真知,此时约定两者的服务器端口号:
//application.properties server.port=8080 //application.yml server: port: 9090
那么此时我们访问9090,可以发现此时的结果如下:
哦豁,此时又是不可以进行访问了,那么接下来就是使用8080来进行操作,毋庸置疑这里的8080端口的服务器是可以与浏览器进行连接的,小编就不再进行演示了;
📚️4.properties 配置⽂件说明
4.1properties的基本语法
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
可以发现,每个单词的连接就是“ . ”,然后key与value之间的连接就是“ = ”;
4.2配置文件的读取
这里我们可以在代码中读取到配置文件;可以使⽤ @Value 注解来实现。@Value 注解使⽤" ${} "的格式读取;
代码如下:
此时我们设置一个需要重配置文件中拿到的数据:
server.port=8080 school.study.id=1207
此时就是我们所规定的配置文件(这里的配置文件是自己定义的),我们就可以拿到这里的自己配置的文件的数据了;
@RestController @RequestMapping("/test") public class test { @Value("${school.study.id}") Integer num; @RequestMapping("id") public String getNum(){ return "拿到的值"+num; } }
此时就是通过value拿到这里的值,然后进行返回,进行浏览器显示:
4.3properties的缺点
properties 配置是以 key-value 的形式配置的,如下图所⽰:
缺点:
从上述配置key看出,properties 配置⽂件中会有很多的冗余的信息
📚️5.yml配置文件说明
yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔.
我们先来学习yml的语法
5.1yml基础语法
yml 是树形结构的配置⽂件,它的基础语法是"key: value".key 和 value 之间使⽤英⽂冒号加空格的⽅式组成,空格不可省略基础语法如下:
spring: application: name: Spring-book server: port: 9090 student: name: lisi id: 0829 age: 19
那么这里进行数据库的连接如下所示:
spring: datasource: url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8&useSSL=false username: root password: root
5.2yml配置文件的读取
5.2.1配置不同类型的数据
在yml中配置不同类型的数据的具体格式如下所示:
# 字符串 string.value: Hello # 布尔值,true或false boolean.value: true boolean.value1: false # 整数 int.value: 10 # 浮点数 float.value: 3.14159 # Null,~代表null null.value: ~ # "" 空字符串 #, 直接后⾯什么都不加就可以了, 但这种⽅式不直观, 更多的表⽰是使⽤引号括起来 empty.value:''
注意:空字符串后面啥都不用加,此时这里加上' '主要是为了方便我们这里进项观察
5.2.2配置对象的读取
这里和上面一样,在读取数据的时候需要的就是@value注解进行操作,但是这是只是一种情况,引用的方式和上面properties的方式一致,这里小编就不再进行演示了,那么对象的获取就是另一种注解:@ConfigurationProperties
这里的yml配置文件的代码如下所示:
student: name: lisi id: 0829 age: 19
那么我们如何获取到配置文件中的数据呢?
具体的代码如下所示:
@ConfigurationProperties(prefix = "student") @Component @Data public class StudentInfo { private String name; private int id; private int age; }
注意:
这里小编的使用了lombok依赖中的@data,来自动实现get与set,tostring等等的重写;
使用component将这里的对象交给spring进行管理
最后使用@ConfigurationProperties来进行配置文件中对象的获取;
最后演示代码如下:
@RestController @RequestMapping("/test") public class test{ @Autowired private StudentInfo studentInfo; @RequestMapping("/student") public String getStudent(){ return "获取到的对象值:"+studentInfo; } }
解释:这里就是通过Autowired来进行对象的引入的操作的;最后使用路由映射来进行对象的打印的操作;
最终的效果如下所示:
此时我们可以发现已经拿到了这里的对象里各个属性的值;
5.2.3配置列表的读取
这里的yml的配置文件的代码如下所示:
dbtypes: name: - hello - java - nihao
注意:在每个列表的成员描述中“ - ”与每个值之间必须存在空格;
那么此时我们的代码如下所示:
@Component @Data @ConfigurationProperties("dbtypes") public class DbtypesInfo { private List name; }
解释:
@Data负责重写,列表的名称要和yml配置文件的一致
@component负责将这个对象交给spring管理
@configurationProperties负责获取到配置文件中列表的值
那么展示的代码如下:
@Autowired private DbtypesInfo dbtypes; @RequestMapping("/dbtypes") public String getDbtypes(){ return "获取到的列表值:"+ dbtypes.toString(); }
解释:这里就是通过Autowired来进行对象的引入的操作的;最后使用路由映射来进行对象的打印的操作;
最后的结果如下:
5.2.4配置Map的读取
配置文件yml的写法如下:
maptypes: map: string1: zhangsan string2: lisi string3: wangwu
这里就是map的配置文件的写法
那么接下来就是获取这里的配置文件:
@Data @Component @ConfigurationProperties("maptypes") public class MapInfo { private Map map; }
解释:
Data负责重写,map的名称要和yml配置文件的一致
@component负责将这个对象交给spring管理
@configurationProperties负责获取到配置文件中map的值
此时展示的代码如下:
@Autowired private MapInfo mapInfo; @RequestMapping("maptypes") public String getMaptype(){ return "获取到的map:"+ mapInfo.toString(); }
最终的结果展示就是如下:
5.3yml的优缺点
优点:
1. 可读性⾼,写法简单, 易于理解
2. ⽀持更多的数据类型, 可以简单表达对象, 数组, List,Map等数据形态
3. ⽀持更多的编程语⾔, 不⽌是Java中可以使⽤, 在Golang, Python, Ruby, JavaScript中也可以使⽤
缺点:
1. 不适合写复杂的配置⽂件
2. 有比较严格的格式要求,例如对于空格这个是必不可少的
📚️6.总结
本期小编主要讲解了关于Spring Boot的配置文件,如何进行快速入手,以及配置文件的格式是哪几种,关于properties格式的配置文件和yml格式的配置文件都做了比较详细的分析;
🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!
💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。
😊😊 期待你的关注~~~