Spring Boot中的配置文件有哪些类型
在 Spring Boot 中,配置文件用于管理应用程序的设置和参数,通常存放在项目的 src/main/resources
目录下。Spring Boot 支持多种类型的配置文件,并通过这些文件来控制应用的行为和环境配置。
1. application.properties
application.properties
是 Spring Boot 默认的配置文件格式之一,它是基于 键值对 的配置方式,简单易用。通过这个文件,你可以配置 Spring Boot 应用程序的各种参数,如数据库连接、端口号、日志级别等。
示例:
# Server port
server.port=8080# Logging level
logging.level.org.springframework=DEBUG# Database configuration
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
server.port=8080
设置应用程序的 HTTP 服务端口为8080
。logging.level.org.springframework=DEBUG
设置 Spring 框架的日志级别为DEBUG
。spring.datasource.*
配置数据库连接的 URL、用户名和密码。
2. application.yml / application.yaml
application.yml
(或 application.yaml
)是另一个常见的配置文件格式,YAML 是一种更加结构化、可读性强的格式。在功能上,它与 application.properties
完全相同,可以用来配置相同的内容。
YAML 格式更适合表示层级结构,因此在配置嵌套的属性时更为方便和直观。
示例:
server:port: 8080logging:level:org.springframework: DEBUGspring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: secret
server.port: 8080
设置应用程序的 HTTP 服务端口。logging.level.org.springframework: DEBUG
设置日志级别。spring.datasource.*
配置数据库连接的 URL、用户名和密码。
注意: application.yml
和 application.properties
配置文件可以共存,Spring Boot 会优先加载 application.properties
配置文件。如果两者有冲突,YAML 格式的配置将覆盖 properties
文件中的配置。
3. application-{profile}.properties / application-{profile}.yml
Spring Boot 支持 Profile(环境配置),可以根据不同的运行环境使用不同的配置文件。通过在配置文件名中加入不同的环境标识符(即 Profile),你可以在不同环境中使用不同的配置。
示例:
application-dev.properties
:开发环境的配置文件application-prod.properties
:生产环境的配置文件
当应用启动时,Spring Boot 会根据激活的 Profile 加载对应的配置文件。
配置文件:
application.properties
# 默认配置
spring.datasource.url=jdbc:mysql://localhost:3306/defaultdb
application-dev.properties
# 开发环境配置
spring.datasource.url=jdbc:mysql://localhost:3306/devdb
application-prod.properties
# 生产环境配置
spring.datasource.url=jdbc:mysql://localhost:3306/proddb
激活 Profile
你可以在 application.properties
或 application.yml
中指定激活的 Profile:
在 application.properties
中:
spring.profiles.active=dev
在 application.yml
中:
spring:profiles:active: dev
或者在命令行启动时指定:
java -jar myapp.jar --spring.profiles.active=prod
4. bootstrap.properties / bootstrap.yml
bootstrap.properties
和 bootstrap.yml
主要用于 Spring Cloud Config 或在微服务架构中使用的配置。它们通常用于在应用程序启动时加载一些与环境无关的配置,如配置服务器的地址、配置文件的版本等。一般情况下,bootstrap
配置文件会在 application
配置文件之前加载。
示例:
spring.cloud.config.uri=http://localhost:8888
spring.application.name=myapp
在这个例子中,spring.cloud.config.uri
用来指定 Spring Cloud Config 服务的位置。
5. logback-spring.xml
虽然 Spring Boot 默认使用 application.properties
或 application.yml
来配置日志,但你也可以使用 Logback 来更细粒度地控制日志设置。Spring Boot 允许你使用 logback-spring.xml
文件来定义日志配置。logback-spring.xml
是 Logback 的配置文件,并且在 Spring Boot 中,你可以使用 Spring 特定的属性来进行动态配置。
示例:
<configuration><property name="LOGS" value="./logs" /><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="STDOUT" /></root>
</configuration>
- 上面的
logback-spring.xml
配置定义了控制台日志的输出格式,并设置了日志级别为INFO
。
6. Custom Properties Files (自定义配置文件)
除了 application.properties
和 application.yml
,Spring Boot 允许你使用自定义配置文件,并通过 @PropertySource
注解来加载它们。例如,你可以创建一个自定义的配置文件 custom.properties
,并在 Spring Boot 应用中加载它。
示例:
创建 custom.properties
文件:
myapp.customProperty=HelloWorld
在 Spring Boot 配置类中加载这个文件:
@Configuration
@PropertySource("classpath:custom.properties")
public class CustomConfig {@Value("${myapp.customProperty}")private String customProperty;@PostConstructpublic void init() {System.out.println("Custom Property: " + customProperty);}
}
7. application.properties / YAML 版本控制
Spring Boot 还允许你在配置文件中使用 版本控制 和 配置文件管理,例如可以根据不同的版本使用不同的配置文件。一般而言,你可以通过工具如 Spring Cloud Config
实现这一需求。
总结
Spring Boot 提供了多种类型的配置文件,包括但不限于:
- application.properties:默认的键值对格式配置文件。
- application.yml / application.yaml:YAML 格式的配置文件,结构化、可读性强。
- application-{profile}.properties / application-{profile}.yml:根据不同的环境(Profile)加载不同的配置文件。
- bootstrap.properties / bootstrap.yml:用于 Spring Cloud 配置或微服务架构中,主要在应用启动时加载。
- logback-spring.xml:用于日志配置。
- 自定义配置文件:使用
@PropertySource
加载的自定义配置文件。
通过这些配置文件,Spring Boot 可以灵活地管理应用的各类参数,并根据不同的环境进行调整。
相关文章:
Spring Boot中的配置文件有哪些类型
在 Spring Boot 中,配置文件用于管理应用程序的设置和参数,通常存放在项目的 src/main/resources 目录下。Spring Boot 支持多种类型的配置文件,并通过这些文件来控制应用的行为和环境配置。 1. application.properties application.proper…...
Spring Boot 项目启动后自动加载系统配置的多种实现方式
Spring Boot 项目启动后自动加载系统配置的多种实现方式 在 Spring Boot 项目中,可以通过以下几种方式实现 在项目启动完成后自动加载系统配置缓存操作 的需求: 1. 使用 CommandLineRunner CommandLineRunner 是一个接口,可以用来在 Spring…...
如何在 CentOS 中生成 CSR
在本教程中,我们将向您展示如何在CentOS 7和6中生成CSR。您可以直接从服务器生成 CSR。 只需按照以下步骤操作: 第 1 步:使用安全外壳 (SSH) 登录您的服务器 步骤 2:创建私钥和 CSR 文件 在提示符处键入以…...

qml XmlListModel详解
1、概述 XmlListModel是QtQuick用于从XML数据创建只读模型的组件。它可以作为各种view元素的数据源,比如ListView、GridView、PathView等;也可以作为其他和model交互的元素的数据源。通过XmlRole定义角色,如name、age和height,并…...
C++并发编程之跨应用程序与驱动程序的单生产者单消费者队列
设计一个单生产者单消费者队列(SPSC队列),不使用C STL库或操作系统原子操作函数,并且将其放入跨进程共享内存中以便在Ring3(用户模式)和Ring0(内核模式)之间传递数据,是一…...

PostgreSQL技术内幕22:vacuum full 和 vacuum
文章目录 0.简介1.概念及使用方式2.工作原理2.1 主要功能2.2 清理流程2.3 防止事务id环绕说明 3.使用建议 0.简介 在之前介绍MVCC文章中介绍过常见的MVCC实现的两种方式,一种是将旧数据放到回滚段,一种是直接生成一条新数据(对于删除是不删除…...

【网络】:网络编程套接字
目录 源IP地址和目的IP地址 源MAC地址和目的MAC地址 源端口号和目的端口号 端口号 VS 进程ID TCP协议和UDP协议 网络字节序 字符串IP和整数IP相互转换 查看当前网络的状态 socket编程接口 socket常见API 创建套接字(socket) 绑定端口号&…...

java基础概念55-不可变集合
一、定义 不可变集合:不可以被修改的集合,只能查询。(长度、内容均不可被修改) 二、创建不可变集合 【注意】: 此方法是在JDK9中引入的。 2-1、list不可变集合 示例: import java.util.List;public cla…...
深入理解 C++ 函数重载
在 C 中, 函数重载是一个非常强大的特性, 允许多个函数使用相同的名称, 但具有不同的参数类型. 重载解析决定了在给定的调用中, 编译器应选择哪个版本的重载函数. 本文将深入探讨 C 重载解析的工作原理, 帮助你在实际编程中更好地理解这一机制. 重载(Overload) vs 重写(Overri…...

相机和激光雷达的外参标定 - 无标定板版本
1. 实现的效果 通过本软件实现求解相机和LiDAR的外参,即2个传感器之间的三维平移[x, y, z]和三维旋转[roll, pitch, yaw]。完成标定后,可将点云投影到图像,效果图如下: 本软件的优势:(1)无需特…...
Redis 知识速览
文章目录 1. Redis 简介2. Redis 优缺点3. Redis 高性能4. Redis VM 机制5. Redis 数据类型6. 应用场景7. 持久化8. 过期策略9. 内存相关10. 线程模型11. 事务12. 集群 1. Redis 简介 定义:Redis 是一个用 C 语言编写的高性能非关系型(NoSQL)…...

LeetCode 热题 100_从前序与中序遍历序列构造二叉树(47_105_中等_C++)(二叉树;递归)
LeetCode 热题 100_从前序与中序遍历序列构造二叉树(47_105) 题目描述:输入输出样例:题解:解题思路:思路一(递归): 代码实现代码实现(思路一(递归…...
使用sqlplus的easy connect时如何指定是链接到shared server还是dedicated process
在oracle配置了shared server的情况下 可以使用 :shared来指定链接到shared server也可以默认不指定 不指定的情况下会默认链接到shared server 如果想链接到 dedicated process 则必须显式指定链接到dedicated process server type的类型包括DEDICATED, SHARED, or POOLED. […...

ubuntu22.4 ROS2 安装gazebo(环境变量配置)
ubuntu版本:ubuntu22.4 最近在学习ROS2 视频教程古月居的入门课: 视频教程 文字笔记 问题 在学到关于Gazebo的时候,遇到下面问题: 运行 $ ros2 launch gazebo_ros gazebo.launch.py在这里卡住,不弹出gazebo 解决…...
【机器学习:十四、TensorFlow与PyTorch的对比分析】
1. 发展背景与社区支持 1.1 TensorFlow的背景与发展 TensorFlow是Google于2015年发布的开源深度学习框架,基于其前身DistBelief系统。作为Google大规模深度学习研究成果的延续,TensorFlow从一开始就定位为生产级框架,强调跨平台部署能力和性…...

[C++]类与对象(上)
目录 💕1.C中结构体的优化 💕2.类的定义 💕3.类与结构体的不同点 💕4.访问限定符(public,private,protected) 💕5.类域 💕6.类的实例化 💕7.类的字节大小 💕8.类的字节大小特例…...
大数据技术实训:Zookeeper集群配置
一、本地模式安装部署 1)安装前准备 (1)安装jdk (2)拷贝Zookeeper安装包到Linux系统下 (3)解压到指定目录 tar -zxvf zookeeper-3.5.7.tar.gz -C /opt/module/ 2)配置修改 &am…...
HTML5 加载动画(Loading Animation)
加载动画(Loading Animation)详解 概述 加载动画是指在数据加载过程中,向用户展示的一种视觉效果,旨在提升用户体验,告知用户系统正在处理请求。它可以减少用户的等待焦虑感,提高界面的互动性。 常见的加…...

C语言进阶-2指针(一)
目录 1. 字符指针1.1 一般用法:字符指针指向单字符1.2 第二种用法,字符串首地址给指针变量1.3 习题,下面代码的输出结果是什么?为什么? 2. 指针数组2.1实例—— 字符指针数组2.2实例——整形指针数组2.3 例子,识别下下…...
【人工智能】用Python进行对象检测:从OpenCV到YOLO的全面指南
对象检测是计算机视觉领域的核心任务之一,广泛应用于视频监控、自动驾驶、智能安防等多个场景。随着深度学习技术的发展,基于传统方法的对象检测逐渐被基于神经网络的先进模型所取代。本文将系统地介绍如何使用Python进行对象检测,重点探讨了…...
使用 Python 自动化 Word 文档样式复制与内容生成
在办公自动化领域,如何高效地处理 Word 文档的样式和内容复制是一个常见需求。本文将通过一个完整的代码示例,展示如何利用 Python 的 python-docx 库实现 Word 文档样式的深度复制 和 动态内容生成,并结合知识库中的最佳实践优化文档处理流程…...

如何防止服务器被用于僵尸网络(Botnet)攻击 ?
防止服务器被用于僵尸网络(Botnet)攻击是关键的网络安全措施之一。僵尸网络是黑客利用大量被感染的计算机、服务器或物联网设备来发起攻击的网络。以下是关于如何防止服务器被用于僵尸网络攻击的技术文章: 防止服务器被用于僵尸网络ÿ…...

动态规划之网格图模型(二)
文章目录 动态规划之网格图模型(二)LeetCode 931. 下降路径最小和思路Golang 代码 LeetCode 2684. 矩阵中移动的最大次数思路Golang 代码 LeetCode 2304. 网格中的最小路径代价思路Golang 代码 LeetCode 1289. 下降路径最小和 II思路Golang 代码 LeetCod…...
uv管理spaCy语言模型
本文记录如何在使用uv管理python项目dependencies时,把spaCy的模型也纳入其中. spaCy 一、spaCy简介 spaCy是一个开源的自然语言处理(NLP)库,它主要用于处理文本数据。它支持多种语言,包括英语、中文等。它是由Expl…...
leetcode_206 反转链表
1. 题意 原地反转链表,非常经典的一道题。 2. 解决 2.1 非递归 非递归的比较好理解;链表需要维护前驱和后继两个信息,当我们要更改后继时,先要把原来的后继先存起来。 /*** Definition for singly-linked list.* struct List…...

linux——磁盘和文件系统管理
1、磁盘基础简述 1.1 硬盘基础知识 硬盘(Hard Disk Drive,简称 HDD)是计算机常用的存储设备之一. p如果从存储数据的介质上来区分,硬盘可分为机械硬盘(Hard Disk Drive, HDD)和固态硬盘(Soli…...

算法篇 八大排序(冒泡 插入 选择 堆 希尔 快排 归并 计数)
目录 引言 1.冒泡排序 思路 代码实现 2.选择排序 思路 代码实现(存在易错点) 3.插入排序 思路 代码实现 4.希尔排序 思路 代码实现 5.堆排序 思路 代码实现 6.快速排序(快排) 一.三路划分 思路 代码实现 二.自…...
网络安全全景解析
引言 在数字化时代,网络已深度融入社会生产生活的各个领域,成为推动经济发展和社会进步的关键力量。然而,随着网络应用的日益复杂,网络安全问题也呈现出多样化、复杂化的趋势。从个人隐私泄露到企业核心数据被盗,从基础…...
Spring Boot 自动参数校验
在 Spring Boot 中实现参数自动校验主要依靠 Java Bean Validation API(JSR 380)和 Spring 的集成支持。以下是详细实现步骤: 1. 添加依赖 在 pom.xml 中添加验证依赖: <dependency><groupId>org.springframework.b…...
推荐10个AI视频生成工具网站
以下是10个AI视频生成工具网站推荐: 国内工具 可灵:由快手AI团队研发,支持文生视频、图生视频、首尾帧设置和运镜调整等功能,生成视频画质高,适合短视频创作、AI唱跳、动画短片等。官网:可灵 即梦&#…...