问:SpringBoot核心配置文件都有啥,怎么配?
在SpringBoot的开发过程中,核心配置文件扮演着至关重要的角色。这些文件用于配置应用程序的各种属性和环境设置,使得开发者能够灵活地定制和管理应用程序的行为。本文将探讨SpringBoot的核心配置文件,包括它们的作用、区别,并通过一些小例子进行说明。
一、核心配置文件的类型
SpringBoot支持两种类型的核心配置文件:application.properties
和application.yml
(或application.yaml
)。尽管这两种文件都可以用来配置应用程序的属性,但它们在语法和风格上有所不同。
1. application.properties
文件
application.properties
是一种基于键值对的配置文件格式。它使用简单的文本形式,每行一个配置项,格式为key=value
。这种格式简单明了,易于理解和编辑。
示例:
# 设置内嵌的Tomcat的端口号
server.port=8080# 配置项目的上下文根
server.servlet.context-path=/myapp# 配置数据库连接信息
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret# 设置日志级别
logging.level.org.springframework=DEBUG
2. application.yml
文件
application.yml
(或application.yaml
)采用YAML(YAML Ain’t Markup Language)格式。YAML以其简洁的语法和对层次结构的良好支持而受到青睐。它使用缩进表示层级关系,使得配置文件在表达复杂配置时更加清晰。
示例:
server:port: 8080servlet:context-path: /myappspring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: secretlogging:level:org.springframework: DEBUG
二、核心配置文件的作用
核心配置文件在SpringBoot中起着至关重要的作用,它们定义了应用程序的各种属性和行为,包括但不限于以下几个方面:
- 服务器配置:如端口号、上下文路径等。
- 数据库配置:如数据库连接URL、用户名、密码等。
- 日志配置:如日志级别、日志文件路径等。
- 第三方服务配置:如Redis、RabbitMQ等中间件的连接信息。
- 自定义配置:开发者可以定义自己的配置属性,并在应用程序中使用。
三、核心配置文件的区别
1. 语法风格
application.properties
使用键值对的形式,简单直观,但不适合表达复杂的层次结构。application.yml
使用缩进表示层级关系,适合表达复杂的配置结构,但需要注意缩进的一致性。
2. 可读性和维护性
application.properties
由于格式简单,适合快速编辑和查看,但在处理复杂配置时可能显得冗长。application.yml
通过缩进和层级结构使得配置更加清晰,易于阅读和维护,特别是在配置复杂的应用程序时。
3. 数据类型支持
application.properties
主要支持简单的键值对,对于列表、映射等复杂数据类型的支持不够直观。application.yml
天然支持列表、映射等复杂数据类型,使得配置更加灵活和强大。
四、基于示例的说明
示例一:服务器和数据库配置
application.properties
:
server.port=8080
server.servlet.context-path=/myappspring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
application.yml
:
server:port: 8080servlet:context-path: /myappspring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: secret
在这个示例中,两种配置文件都配置了服务器的端口号和上下文路径,以及数据库的连接信息。可以看出,application.yml
通过缩进和层级结构使得配置更加清晰。
示例二:日志配置
application.properties
:
logging.level.root=INFO
logging.level.com.example.myapp=DEBUG
application.yml
:
logging:level:root: INFOcom.example.myapp: DEBUG
在这个示例中,两种配置文件都配置了日志级别。application.yml
通过层级结构使得配置更加直观和易于理解。
示例三:自定义配置
假设我们需要配置一个邮件服务的发件人地址和SMTP服务器地址。
application.properties
:
mail.from=no-reply@example.com
mail.smtp.host=smtp.example.com
application.yml
:
mail:from: no-reply@example.comsmtp:host: smtp.example.com
在这个示例中,两种配置文件都配置了邮件服务的自定义属性。application.yml
通过缩进和层级结构使得配置更加清晰和易于管理。
五、在应用程序中使用配置文件
在SpringBoot应用程序中,可以使用@Value
注解或@ConfigurationProperties
注解来读取配置文件中的属性。
1. 使用@Value
注解
@Value
注解用于读取单个配置属性值。
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class MailService {@Value("${mail.from}")private String from;@Value("${mail.smtp.host}")private String smtpHost;// 其他方法...
}
2. 使用@ConfigurationProperties
注解
@ConfigurationProperties
注解用于批量读取配置属性值,并将它们绑定到一个Java对象上。
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "mail")
public class MailProperties {private String from;private String smtpHost;// getter和setter方法...
}
在SpringBoot应用程序的主类中,需要启用@ConfigurationProperties
注解的支持:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;@SpringBootApplication
@EnableConfigurationProperties(MailProperties.class)
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}
}
六、总结
SpringBoot的核心配置文件application.properties
和application.yml
在语法风格、可读性和维护性、数据类型支持等方面存在差异。开发者可以根据项目需求和个人偏好选择合适的配置文件格式。同时,通过@Value
注解和@ConfigurationProperties
注解,可以方便地在应用程序中使用配置文件中的属性。掌握这些核心配置文件的使用方法和区别,对于提高SpringBoot应用程序的开发效率和可维护性具有重要意义。
相关文章:
问:SpringBoot核心配置文件都有啥,怎么配?
在SpringBoot的开发过程中,核心配置文件扮演着至关重要的角色。这些文件用于配置应用程序的各种属性和环境设置,使得开发者能够灵活地定制和管理应用程序的行为。本文将探讨SpringBoot的核心配置文件,包括它们的作用、区别,并通过…...
RHCSA作业
课后练习 将整个 /etc 目录下的文件全部打包并用 gzip 压缩成/back/etcback.tar.gz [rootlocalhost ~]# tar -czvf /back/etcback.tar.gz -C / etc 使当前用户永久生效的命令别名:写一个命令命为hello,实现的功能为每输入一次hello命令,就有hello&#…...
ESP32学习笔记_FreeRTOS(3)——SoftwareTimer
摘要(From AI): 这篇笔记全面介绍了 FreeRTOS 软件定时器的核心概念和使用方法,包括定时器的创建、管理、常用 API 和辅助函数,并通过示例代码演示了如何启动、重置和更改定时器的周期。它强调了软件定时器的灵活性、平台无关性以及与硬件定时器的对比 …...
文心一言与千帆大模型平台的区别:探索百度AI生态的双子星
随着人工智能技术的迅猛发展,越来越多的公司开始投入资源开发自己的AI解决方案。在中国,百度作为互联网巨头之一,不仅在搜索引擎领域占据重要位置,还在AI领域取得了显著成就。其中,“文心一言”和“千帆大模型平台”便…...
【c语言】文件操作详解 - 从打开到关闭
文章目录 1. 为什么使用文件?2. 什么是文件?3. 如何标识文件?4. 二进制文件和文本文件?5. 文件的打开和关闭5.1 流和标准流5.1.1 流5.1.2 标准流 5.2 文件指针5.3 文件的打开和关闭 6. 文件的读写顺序6.1 顺序读写函数6.2 对比一组…...
Flink Sink的使用
经过一系列Transformation转换操作后,最后一定要调用Sink操作,才会形成一个完整的DataFlow拓扑。只有调用了Sink操作,才会产生最终的计算结果,这些数据可以写入到的文件、输出到指定的网络端口、消息中间件、外部的文件系统或者是…...
pcl::PointCloud<PointType>::Ptr extractedCloud; 尖括号里的值表示什么含义?
在C中,pcl::PointCloud<PointType>::Ptr是一种智能指针,它是Point Cloud Library (PCL)中用于管理pcl::PointCloud对象的智能指针类型。这里的<pcl::PointCloud<PointType>::Ptr>尖括号里的值表示智能指针所指向的对象类型。 让我们分…...
《基于FPGA的便携式PWM方波信号发生器》论文分析(三)——数码管稳定显示与系统调试
一、论文概述 基于FPGA的便携式PWM方波信号发生器是一篇由任青颖、庹忠曜、黄洵桢、李智禺和张贤宇 等人发表的一篇期刊论文。该论文主要研究了一种新型的信号发生器,旨在解决传统PWM信号发生器在移动设备信号调控中存在的精准度低和便携性差的问题 。其基于现场可编…...
VsCode 插件推荐(个人常用)
VsCode 插件推荐(个人常用)...
路由策略与路由控制实验
AR1、AR2、AR3在互联接口、Loopback0接口上激活OSPF。AR3、AR4属于IS-IS Area 49.0001,这两者都是Level-1路由器,AR3、AR4的系统ID采用0000.0000.000x格式,其中x为设备编号 AR1上存在三个业务网段A、B、C(分别用Loopback1、2、3接…...
训练的decoder模型文本长度不一致,一般设置为多大合适,需要覆盖最长的文本长度么
在训练解码器模型时,文本长度不一致是常见的情况,需要根据任务的特性和数据集的长度分布来设置合理的最大长度 (max_length)。以下是一些指导原则,帮助你设置合适的最大长度: 1. 是否需要覆盖最长文本长度 覆盖最长文本长度: 如果任务对完整性要求很高(例如生成数学公式、…...
过滤条件包含 OR 谓词,如何进行查询优化——OceanBase SQL 优化实践
这篇博客涉及两个点,一个是 “OR Expansion 改写”,另一个是 “基于代价的改写”。 背景 在写SQL查询时,难以避免在过滤条件中使用 OR 谓词,但其往往会导致索引利用效率下降的问题 。本文将分享如何通过查询改写的2种方式进行优化…...
通过异步使用消息队列优化秒杀
通过异步使用消息队列优化秒杀 同步秒杀流程异步优化秒杀异步秒杀流程基于lua脚本保证Redis操作原子性代码实现阻塞队列的缺点 同步秒杀流程 public Result seckillVoucher(Long voucherId) throws InterruptedException {SeckillVoucher seckillVoucher iSeckillVoucherServi…...
AI产业告别“独奏”时代,“天翼云息壤杯”高校AI大赛奏响产学研“交响乐”
文 | 智能相对论 作者 | 陈泊丞 人工智能产业正在从“独奏”时代进入“大合奏”时代。 在早期的AI发展阶段,AI应用主要集中在少数几个领域,如语音识别、图像处理等。这些领域的研究和开发工作往往由少数几家公司或研究机构即可独立完成,犹…...
Hot100 - 字母异位词分组
Hot100 - 字母异位词分组 最佳思路:排序 时间复杂度: O(nmlogm),其中 n 为 strs 数组的长度,m 为每个字符串的长度。 代码: class Solution {public List<List<String>> groupAnagrams(String[] strs) …...
力扣hot100-->排序
排序 1. 56. 合并区间 中等 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输…...
【VRChat 全身动捕】VIVE 手柄改 tracker 定位器教程,低成本光学动捕解决方案(持续更新中2024.11.26)
更新 0.0.1(2024/11/26): 1.解决了内建蓝牙无法识别、“steamVR 蓝牙不可用” 的解决方案 2.解决了 tracker 虽然建立了连接但是在 steamVR 界面上看不到的问题 3.解决了 VIVE 基站1.0 无法被蓝牙识别 && 无法被 steamVR 搜索到 &…...
【Nginx】核心概念与安装配置解释
文章目录 1. 概述2. 核心概念2.1.Http服务器2.2.反向代理2.3. 负载均衡 3. 安装与配置3.1.安装3.2.配置文件解释3.2.1.全局配置块3.2.2.HTTP 配置块3.2.3.Server 块3.2.4.Location 块3.2.5.upstream3.2.6. mine.type文件 3.3.多虚拟主机配置 4. 总结 1. 概述 Nginx是我们常用的…...
Qt界面篇:QMessageBox高级用法
1、演示效果 2、用法注意 2.1 设置图标 用于显示实际图标的pixmap取决于当前的GUI样式。也可以通过设置icon pixmap属性为图标设置自定义pixmap。 QMessageBox::Icon icon(...
【二叉树】【2.1遍历二叉树】【刷题笔记】【灵神题单】
关注二叉树的三个问题: 什么情况适合自顶向下?什么时候适合用自底向上?一般来说,DFS的递归边界是空节点,什么情况下要额外把叶子节点作为递归边界?在什么情况下,DFS需要有返回值?什…...
Mongo数据库 --- Mongo Pipeline
Mongo数据库 --- Mongo Pipeline 什么是Mongo PipelineMongo Pipeline常用的几个StageExplanation with example:MongoDB $matchMongoDB $projectMongoDB $groupMongoDB $unwindMongoDB $countMongoDB $addFields Some Query Examples在C#中使用Aggreagtion Pipeline**方法一: …...
Adobe Illustrator 2024 安装教程与下载分享
介绍一下 下载直接看文章末尾 Adobe Illustrator 是一款由Adobe Systems开发的矢量图形编辑软件。它广泛应用于创建和编辑矢量图形、插图、徽标、图标、排版和广告等领域。以下是Adobe Illustrator的一些主要特点和功能: 矢量绘图:Illustrator使用矢量…...
javax.xml.ws.soap.SOAPFaultException: ZONE_OFFSET
javax.xml.ws.soap.SOAPFaultException 表示 SOAP 调用过程中发生了错误,并且服务端返回了一个 SOAP Fault。 错误信息中提到的 ZONE_OFFSET 可能指的是时区偏移量。在日期和时间处理中,时区偏移量是指格林威治标准时间 (GMT) 的偏移量。如果服务期望特…...
常用的数据结构
队列(FIFO) 栈(LIFO) 链表 hash表 hash冲突处理 开放式寻址 线性探测 表示依次检查索引为 hash(key) + 1、hash(key) + 2 ... 的位置。i 是冲突后的探查步数。公式:hash(i) = (hash(key) + i) % TableSize二次探查 规则:冲突后探查的步长是平方递增的,例如,检查位置为 hash…...
javaweb-day01-html和css初识
html:超文本标记语言 CSS:层叠样式表 1.html实现新浪新闻页面 1.1 标题排版 效果图: 1.2 标题颜色样式 1.3 标签内颜色样式 1.4设置超链接 1.5 正文排版 1.6 页面布局–盒子 (1)盒子模型 (2)页面布局…...
C++11特性(详解)
目录 1.C11简介 2.列表初始化 3.声明 1.auto 2.decltype 3.nullptr 4.范围for循环 5.智能指针 6.STL的一些变化 7.右值引用和移动语义 1.左值引用和右值引用 2.左值引用和右值引用的比较 3.右值引用的使用场景和意义 4.右值引用引用左值及其一些更深入的使用场景分…...
基于Springboot的心灵治愈交流平台系统的设计与实现
基于Springboot的心灵治愈交流平台系统 介绍 基于Springboot的心灵治愈交流平台系统,后端框架使用Springboot和mybatis,前端框架使用Vuehrml,数据库使用mysql,使用B/S架构实现前台用户系统和后台管理员系统,和不同级别…...
初识java(2)
大家好,今天我们来讲讲java中的数据类型。 java跟我们的c语言的数据类型有一些差别,那么接下来我们就来看看。 一.字面常量,其中:199,3.14,‘a’,true都是常量将其称为字面常量。(…...
AIGC--AIGC与人机协作:新的创作模式
AIGC与人机协作:新的创作模式 引言 人工智能生成内容(AIGC)正在以惊人的速度渗透到创作的各个领域。从生成文本、音乐、到图像和视频,AIGC使得创作过程变得更加快捷和高效。然而,AIGC并非完全取代了人类的创作角色&am…...
Wonder3D本地部署到算家云搭建详细教程
Wonder3D简介 Wonder3D仅需2至3分钟即可从单视图图像中重建出高度详细的纹理网格。Wonder3D首先通过跨域扩散模型生成一致的多视图法线图与相应的彩色图像,然后利用一种新颖的法线融合方法实现快速且高质量的重建。 本文详细介绍了在算家云搭建Wonder3D的流程以及…...
建网站需要哪些条件/seo关键词报价查询
简单选择排序(Simple Select Sort) 简单选择排序是入门级别的排序算法,算法易懂,实现简单。假设现在有一个待排序序列,长度是n,要求从小到大排序。简单选择排序将要进行n-1次外循环(不需要进行n…...
淮北矿业工程建设公司网站/百度账号快速登录
❝两只黄鹂鸣翠柳,一堆bug上西天。❞每天上班写着重复的代码,当一个cv仔,忙到八九点,工作效率低,感觉自己没有任何提升。如何能更快的完成手头的工作,提高自己的开发效率,在上一篇《绝对干货~&a…...
阿里云个人网站制作/苏州百度推广分公司电话
2019独角兽企业重金招聘Python工程师标准>>> 深入原理分析与解析(本文并未抄录):http://www.freebuf.com/articles/web/40520.html 下面你将要看到的来自http://www.cnblogs.com/bangerlee/archive/2013/04/06/3002142.html xss表…...
网站建设的技术目标/百度下载链接
networkcomms.net 来自英国的网络通信框架 官方网址 www.networkcomms.net 中文网址www.networkcomms.cn 在网络通信程序中,本地的类或者对象,要传输到通信的另一端,在网络上传输的时候是二进制流的形式。 那么在发送消息的时候要把对象序列化…...
wordpress代码添加/智能建站平台
问题简述:登录MSSQLSERVER的时候,如果输入ip而导致无法登录,可以参考一下步骤,设置完成后即可使用ip登录数据库step1:step2:step3:step4:step5:解决MSSQLSERVER连接服务器时候,输入IP无法连接的问题问题描述࿱…...
盆景网站建设swot分析/淘宝指数官网入口
在进行WCF应用程序开发的时候,如果大量客户端发送请求到WCF服务,往往会出现这个异常,超时。WCF服务响应超时。没有在指定的时间00:01:00内打开操作,分配给这个操作的时间或许只是超时时间的一部分。错误信息如下:The o…...