【Spring】_SpringBoot配置文件

目录

1.Spring Boot配置文件

1.1 Spring Boot 的配置文件类型及命名

1.2 properties和yml的优先级

2. properties配置文件

1.1 properties语法格式

1.2 自定义配置及配置文件的读取

1.3 properties的缺点

3. yml配置文件

3.1 yml语法格式

3.2 自定义配置及配置文件的读取

3.4 yml配置文件

4. 更多配置示例:banner


配置文件最重要的目的是解决硬编码问题;

1.Spring Boot配置文件

1.1 Spring Boot 的配置文件类型及命名

1、Spring Boot配置文件有以下三种:

(1)application.properties

(2)application.yaml;

(3)application.yml;(yml是yaml的缩写)

2、配置文件的命名必须如上所示,不能随便更改application,否则会无法识别:

(1)正确命名:

(2)错误命名:以properties文件为例,将application修改为applications:

1.2 properties和yml的优先级

现在application.properties中设置项目端口为9090:

在application.yml中设置端口为9091:

启动程序,查看启动日志:

现注释掉properties文件的端口设置语句,重新启动项目,启动日志如下:

关于配置文件的优先级总结如下:
1、当.properties和.yml共存在一个项目中时,二者都会被加载。但当二者配置有冲突时,.properties的优先级更高

2、通常在一个项目中仅保留两个配置文件之一即可;

2. properties配置文件

properties文件是Spring Boot项目创建的默认配置文件。

1.1 properties语法格式

properties配置文件以key-value形式组织,key与value用=连接

建议key使用小写,单词与单词之间使用.进行分割;

以配置项目端口号和配置数据库连接为例:

# 配置项目端口号
server.port=9090
# 配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

注意使用的是spring的@value,不是lombok的@value:

1.2 自定义配置及配置文件的读取

若需在项目中主动读取配置文件,可以使用@Value注解实现,使以"${ }"格式读取,示例如下:

现在application.properties中新增配置项,令其key为demo.key:

# 应用服务 WEB 访问端口
server.port=8080# 自定义配置
demo.key=hello,properties

在Controller包下创建一个propertiesController类:

package com.example.iocdemo1.Controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class PropertiesController {@Value("${demo.key}")private String key1;@RequestMapping("/readKey")public  String readKey(){return "Configuration item has read: key1 = "+key1;}
}

启动程序,通过Chrome进行访问:

可见配置文件成功读取;

1.3 properties的缺点

以连接数据库为例:

# 配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&
spring.datasource.username=root
spring.datasource.password=root

可见properties中存在一定冗余,如spring.datasource重复写; 

3. yml配置文件

3.1 yml语法格式

yml是树形配置文件,其基础语法格式为“key: value”,冒号后有一个空格不可省略,以配置项目端口号和配置数据库连接为例:

# 配置项目端口号
server:port: 9091
#  配置数据库连接
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=falseusername: rootpassword: root

注:1、逐层换行表示一种层次,idea会帮助换行,对于server、spring等必须顶格,否则会报错;

2、key与value之间的冒号后必须有一个空格,否则会报错;

yml文件中的颜色变化也可帮助检查:

3.2 自定义配置及配置文件的读取

若需在项目中主动读取配置文件,可以使用@Value注解实现,使以"${ }"格式读取,示例如下:

现在application.yml中新增配置项,令其key为demo.key1:

demo:key1: hello,yml

 在Controller包下创建一个ymlController类:

package com.example.iocdemo1.Controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ymlController {@Value("${demo.key1}")private String key1;@RequestMapping("/readYml")public String redKey1(){return "Configuration item has read: key1 = "+key1;}
}

启动程序,使用Chrome进行访问: 

可见配置文件成功读取;

注:在yml配置的文件使用${ }进行读取时,需将配置文件中的冒号与空格更换为.

3.4 yml配置文件

优点:

1、可读性高,写法简单,易于理解;

2、支持更多数据类型,可简单表达对象,数组,List,Map等数据形态;

(本部分将在下一篇文章进行介绍)

3、支持更多编程语言,不仅在java中,在golang、python等中都可以使用;

缺点:

1、不适合写复杂的配置文件,当配置文件非常复杂时会造成可读性较差;

2、对格式有较强要求,尤其是空格很容易造成难以查找和纠正的错误;

4. 更多配置示例:banner

Spring官网提供的更多配置见链接:Common Application Properties :: Spring Boot

Spring默认启动日志设计的banner图形为spring:

现使用yml配置文件,以修改spring默认启动输出的banner图形为例,将其修改为Hello World。

第一步:查找官网banner的配置:

第二步:创建banner.txt文件:

可使用一些在线小工具生成Hello World图案,复制到banner.txt中:

第三步:在yml中新增banner.txt配置如下:

# 配置项目端口号
server:port: 9091
#  配置数据库连接
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=falseusername: rootpassword: rootbanner:location: banner.txt

第四步:重启程序,查看日志:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/68197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实操给触摸一体机接入大模型语音交互

本文以CSK6 大模型开发板串口触摸屏为例,实操讲解触摸一体机怎样快速增加大模型语音交互功能,使用户能够通过语音在一体机上查询信息、获取智能回答及实现更多互动功能等。 在本文方案中通过CSK6大模型语音开发板采集用户语音,将语音数据传输…

RabbitMQ 从入门到精通:从工作模式到集群部署实战(一)

#作者:闫乾苓 文章目录 RabbitMQ简介RabbitMQ与VMware的关系架构工作流程RabbitMQ 队列工作模式及适用场景简单队列模式(Simple Queue)工作队列模式(Work Queue)发布/订阅模式(Publish/Subscribe&#xff…

RK3568平台开发系列讲解(ConfigFS篇)ConfigFS核心数据结构

🚀返回专栏总目录 文章目录 一、数据结构二、结构体关系三、案例3.1、configfs_subsystem 实例3.2、config_group 实例化四、属性和方法五、config_item实例化沉淀、分享、成长,让自己和他人都能有所收获!😄 理解 ConfigFS 的核心数据结构对于深入使用和定制 ConfigFS 非…

微信小程序案例1——制作猫眼电影底部标签导航栏

文章目录 一、项目步骤1 新建一个无AppID的movie项目2将准备好的底部标签导航图标拷贝到movie项目下面(将图标文件夹image放到项目文件夹里)3 打开App.json配置文件,在pages数组里添加4个页面路径:电影“pages/movie/movie”、影院“pages/cinema/cinema…

CSS 伪类(Pseudo-classes)的详细介绍

CSS 伪类详解与示例 在日常的前端开发中,CSS 伪类可以帮助我们非常精准地选择元素或其特定状态,从而达到丰富页面表现的目的。本文将详细介绍以下伪类的使用: 表单相关伪类 :checked、:disabled、:enabled、:in-range、:invalid、:optional、…

Elasticsearch 开放推理 API 增加了 Azure AI Studio 支持

作者:来自 Elastic Mark Hoy Elasticsearch 开放推理 API 现已支持 Azure AI Studio。在此博客中了解如何将 Azure AI Studio 功能与 Elasticsearch 结合使用。 作为我们持续致力于为 Microsoft Azure 开发人员提供他们选择的工具的一部分,我们很高兴地宣…

JUC学习笔记02

文章目录 JUC笔记2练习题:手写线程池代码解释:AdvancedThreadPool 类:WorkerThread 内部类:AdvancedThreadPoolExample 类: 线程池的思考CPU密集型IO密集型 练习题:手写自动重试机练习题:手写定…

baigeiRSA

baigeiRSA 打开附件有两个: 1.import libnumfrom Crypto.Util import numberfrom secret import flag​size 128e 65537p number.getPrime(size)q number.getPrime(size)n p*q​m libnum.s2n(flag)c pow(m, e, n)​print(n %d % n)print(c %d % c)​​2.n…

【csp-j学习完C++语法后,如何进阶学习C++算法和数据结构?】

在掌握了 CSP - J 的 C 语法基础后,接下来的进阶学习需要系统地掌握各类算法和数据结构知识,并通过大量练习来巩固和提高应用能力。以下是一份详细的进阶学习规划: 第一阶段:基础算法学习(1 - 2 个月) 排…

QT中解决使用QCustomplot绘制高速大量数据时频谱图卡顿问题

[!!!核心方法!!!] 使用带参数的replot()函数绘制m_pCustomPlot>replot(QCustomPlot::rpQueuedReplot) 1. replot() 方法 void QCustomPlot::replot(QCustomPlot::RefreshPriority refreshPriority rp…

【AI】卷积神经网络CNN

不定期更新,建议关注收藏点赞。 目录 零碎小组件经验总结早期的CNN 零碎小组件 全连接神经网络 目前已经被替代。 每个神经元都有参与,但由于数据中的特征点变化大,全连接神经网络把所有数据特征都学习了,故效果不好。感受野&…

微信小程序~电器维修系统小程序

博主介绍:✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

LLAMA-Factory安装教程(解决报错cannot allocate memory in static TLS block的问题)

步骤一: 下载基础镜像 # 配置docker DNS vi /etc/docker/daemon.json # daemon.json文件中 { "insecure-registries": ["https://swr.cn-east-317.qdrgznjszx.com"], "registry-mirrors": ["https://docker.mirrors.ustc.edu.c…

Java高频面试之SE-18

hello啊,各位观众姥爷们!!!本baby今天又来了!哈哈哈哈哈嗝🐶 BIO NIO AIO的区别? 在 Java 网络编程中,BIO、NIO 和 AIO 是三种不同的 I/O 模型,它们的核心区别在于 阻塞…

蓝桥杯刷题DAY3:Horner 法则 前缀和+差分数组 贪心

所谓刷题,最重要的就是细心 📌 题目描述 在 X 进制 中,每一数位的进制不固定。例如: 最低位 采用 2 进制,第二位 采用 10 进制,第三位 采用 8 进制, 则 X 进制数 321 的十进制值为&#xff…

BUU24 [GXYCTF2019]BabyUpload 1

开局上传文件 上传muma.php 上传.htaccess文件也被打回 再次求助互联网,才发现这提示给的多么明显,上传.htaccess文件是检查文件类型(Contnet-Type),上传muma.php是检查后缀里头有没有ph ,检查文件类型那…

RabbitMQ 从入门到精通:从工作模式到集群部署实战(三)

文章目录 使用CLI管理RabbitMQrabbitmqctlrabbitmq-queuesrabbitmq-diagnosticsrabbitmq-pluginsrabbitmq-streamsrabbitmq-upgraderabbitmqadmin 使用CLI管理RabbitMQ RabbitMQ CLI 工具需要安装兼容的 Erlang/OTP版本。 这些工具假定系统区域设置为 UTF-8(例如en…

3.攻防世界 weak_auth

题目描述提示 是一个登录界面,需要密码登录 进入题目页面如下 弱口令密码爆破 用1 or 1 #试试 提示用admin登录 则尝试 用户名admin密码:123456 直接得到flag 常用弱口令密码(可复制) 用户名 admin admin-- admin or -- admin…

优化深度神经网络

训练集、开发集(验证集)、测试集 偏差与方差 正则化 L2正则 Dropout 随机丢弃部分神经元输入,经常用于计算机视觉的神经网络内,因为通常没有足够的训练数据,很容易出现过拟合的问题 数据增强 训练集规一化 可以使其图像更均匀,…

【玩转 Postman 接口测试与开发2_018】第14章:利用 Postman 初探 API 安全测试

《API Testing and Development with Postman》最新第二版封面 文章目录 第十四章 API 安全测试1 OWASP API 安全清单1.1 相关背景1.2 OWASP API 安全清单1.3 认证与授权1.4 破防的对象级授权(Broken object-level authorization)1.5 破防的属性级授权&a…