| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> SpringBoot配置文件是什么?该如何使用? -> 正文阅读 |
|
[Java知识库]SpringBoot配置文件是什么?该如何使用? |
一、前言前面我们讲解了SpringBoot到底是什么?如何理解parent、starter、引导类以及内嵌Tomcat?我们可以了解 二、问题引入我们发现SpringBoot几乎不用做任何的配置,功能就有了,确实很好用。但是仔细想想,没有做配置意味着什么?意味着配置已经做好了,不用你自己写了。但是新的问题又来了,如果不想用已经写好的默认配置,该如何干预呢?这就是这一篇博客咱们要研究的问题。 三、属性配置当我们创建一个新的springboot工程,在 答案其实很简单,进入
运行一下看看结果,如下图所示,结果是80端口,完全正确 关闭运行日志图表(banner)
设置运行日志的显示级别
?我们现在配置了3个信息,但是又有新的问题了。这个配置是随便写的吗?什么都能配?有没有一个东西显示所有能配置的项呢?此外这个配置和什么东西有关呢?会不会因为我写了什么东西以后才可以写什么配置呢?比如我现在没有写数据库相关的东西,能否配置数据呢? ?打开SpringBoot的官网,找到SpringBoot官方文档,打开查看附录中的 ?能写什么的问题解决了,再来说第二个问题,这个配置项和什么有关。在 温馨提示 ?所有的starter中都会依赖下面这个starter,叫做
四、配置文件分类SpringBoot除了支持properties格式的配置文件,还支持另外两种格式的配置文件。分别如下:
就拿修改端口号为例,看看三种配置文件的特点: application.properties(properties格式)
?仔细看会发现 五、配置文件优先级现在我们已经知道使用三种格式都可以做配置了,好奇友友们就会问了,万一我三个都写了,他们三个谁说了算呢? 其实三个文件如果共存的话,谁生效说的就是配置文件加载的优先级别。我们就让三个配置文件书写同样的信息,比如都配置端口,然后我们让每个文件配置的端口号都不一样,最后启动程序后看启动端口是多少就知道谁的加载优先级比较高了。
?启动后发现目前的启动端口为80,把80对应的文件删除掉,然后再启动,现在端口又改成了81。现在我们就已经知道了3个文件的加载优先顺序是什么
?虽然得到了一个知识结论,但是我们实际开发的时候还是要看最终的效果为准。也就是你要的最终效果是什么自己是明确的,上述结论只能帮助你分析结论产生的原因。这个知识了解一下就行了,因为以后同时写多种配置文件格式的情况实在是较少。 ?最后我们把配置文件内容给修改一下
?我们发现不仅端口生效了,最终显示80,同时其他两条配置也生效了,看来每个配置文件中的项都会生效,只不过如果多个配置文件中有相同类型的配置会优先级高的文件覆盖优先级的文件中的配置。如果配置项不同的话,那所有的配置项都会生效。 总结
六、语法介绍
对于文件自身在书写时,具有严格的语法格式要求,具体如下:
上述规则不要死记硬背,按照书写习惯慢慢适应,并且在Idea下由于具有提示功能,慢慢适应着写格式就行了。核心的一条规则要记住,数据前面要加空格与冒号隔开 ?下面列出常见的数据书写格式,熟悉一下
?此外,yaml格式中也可以表示数组,在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔
现在我们已经知道了yaml具有严格的数据格式要求,并且已经可以正确的书写yaml文件了,那这些文件书写后其实是在定义一些数据。这些数据时给谁用的呢?大部分是SpringBoot框架内部使用,但是如果我们想配置一些数据自己使用,能不能用呢?答案是可以的,那如何读取yaml文件中的数据呢? 七、数据读取对于yaml文件中的数据,其实你就可以想象成这就是一个小型的数据库,里面保存有若干数据,每个数据都有一个独立的名字,如果你想读取里面的数据,肯定是支持的,下面就介绍3种读取数据的方式 为了方便测试,先看看我在配置文件中写的测试数据内容 1、读取单一数据yaml中保存的单个数据,可以使用Spring中的注解直接读取,使用@Value可以读取单个数据,属性名引用方式:${一级属性名.二级属性名……} 写一个代码测试一下:
运行结果完全正确! 2、读取全部数据读取单一数据可以解决读取数据的问题,但是如果定义的数据量过大,这么一个一个书写肯定会累死人的,SpringBoot提供了一个对象,能够把所有的数据都封装到这一个对象中,这个对象叫做
运行结果也是完全正确的! 3、读取对象数据单一数据读取书写比较繁琐,全数据封装又封装的太厉害了,每次拿数据还要一个一个的getProperties(),总之用起来都不是很舒服。由于Java是一个面向对象的语言,很多情况下,我们会将一组数据封装成一个对象。SpringBoot也提供了可以将一组yaml对象数据封装一个Java对象的操作 首先定义一个对象,并将该对象纳入Spring管控的范围,也就是定义成一个bean,然后使用注解
这个 运行结果依然是正确的! 4、数据引用在书写yaml数据时,经常出现如下现象,比如很多个文件都具有相同的目录前缀
或者
?这个时候就可以使用引用格式来定义数据,其实就是搞了个变量名,然后引用变量了,格式如下:
注意事项:在书写字符串时,如果需要使用转义字符,需要将数据字符串使用双引号包裹起来
小结
八、总结SpringBoot配置文件的使用也同样简化了开发的步骤,非常重要,我们要熟练使用。博主正在积极准备SpringBoot整合第三方技术相关的博客文章,喜欢的话,可以给博主一个赞哦~~ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 11:47:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |