问:SpringBoot核心配置文件都有啥,怎么配?

在这里插入图片描述
在SpringBoot的开发过程中,核心配置文件扮演着至关重要的角色。这些文件用于配置应用程序的各种属性和环境设置,使得开发者能够灵活地定制和管理应用程序的行为。本文将探讨SpringBoot的核心配置文件,包括它们的作用、区别,并通过一些小例子进行说明。

一、核心配置文件的类型

SpringBoot支持两种类型的核心配置文件:application.propertiesapplication.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中起着至关重要的作用,它们定义了应用程序的各种属性和行为,包括但不限于以下几个方面:

  1. 服务器配置:如端口号、上下文路径等。
  2. 数据库配置:如数据库连接URL、用户名、密码等。
  3. 日志配置:如日志级别、日志文件路径等。
  4. 第三方服务配置:如Redis、RabbitMQ等中间件的连接信息。
  5. 自定义配置:开发者可以定义自己的配置属性,并在应用程序中使用。

三、核心配置文件的区别

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.propertiesapplication.yml在语法风格、可读性和维护性、数据类型支持等方面存在差异。开发者可以根据项目需求和个人偏好选择合适的配置文件格式。同时,通过@Value注解和@ConfigurationProperties注解,可以方便地在应用程序中使用配置文件中的属性。掌握这些核心配置文件的使用方法和区别,对于提高SpringBoot应用程序的开发效率和可维护性具有重要意义。

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

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

相关文章

【机器学习】数据集合集!

本文将为您介绍经典、热门的数据集,希望对您在选择适合的数据集时有所帮助。 1 privacy 更新时间:2024-11-26 访问地址: GitHub 描述: 此存储库包含 TensorFlow Privacy(一种 Python)的源代码 库,其中包…

Linux V4L2框架介绍

linux V4L2框架介绍 V4L2框架介绍 V4L2,全称Video for Linux 2,是Linux操作系统下用于视频数据采集设备的驱动框。它提供了一种标准化的方式使用户空间程序能够与视频设备进行通信和交互。通过V4L2接口,用户可以方便地实现视频图像数据的采…

[网安靶场] [更新中] UPLOAD LABS —— 靶场笔记合集

GitHub - c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场一个想帮你总结所有类型的上传漏洞的靶场. Contribute to c0ny1/upload-labs development by creating an account on GitHub.https://github.com/c0ny1/upload-labs 0x01:UPLOAD LABS 靶场初识…

SpringBoot社团管理:用户体验优化

3系统分析 3.1可行性分析 通过对本社团管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本社团管理系统采用SSM框架,JAVA作为开发语言&#…

org.apache.log4j的日志记录级别和基础使用Demo

org.apache.log4j的日志记录级别和基础使用Demo,本次案例展示,使用是的maven项目,搭建的一个简单的爬虫案例。里面采用了大家熟悉的日志记录插件,log4j。来自apache公司的开源插件。 package com.qian.test;import org.apache.log…

2024年第15届蓝桥杯C/C++组蓝桥杯JAVA实现

目录 第一题握手,这个直接从49累加到7即可,没啥难度,后面7个不握手就好了,没啥讲的,(然后第二个题填空好难,嘻嘻不会) 第三题.好数​编辑 第四题0R格式 宝石组合 数字接龙 最后一题:拔河 第…

matlab根据excel表头筛选表格数据

有如下表格需要筛选: 如果要筛选style中的A,color中的F2,num中的3。 代码如下: clear;clc; file_Pathstrcat(F:\csdn\,test1.xlsx); %表格路径、文件名 E1readtable(file_Path,Sheet,1); %读取表格中的字母和数字,1代表第一个…

day05(单片机高级)PCB基础

目录 PCB基础 什么是PCB?PCB的作用? PCB的制作过程 PCB板的层数 PCB设计软件 安装立创EDA PCB基础 什么是PCB?PCB的作用? PCB(Printed Circuit Board),中文名称为印制电路板,又称印刷…

【机器学习】——朴素贝叶斯模型

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

【Android+多线程】异步 多线程 知识总结:基础概念 / 多种方式 / 实现方法 / 源码分析

1 基本概念 1.1 线程 定义:一个基本的CPU执行单元 & 程序执行流的最小单元 比进程更小的可独立运行的基本单位,可理解为:轻量级进程组成:线程ID 程序计数器 寄存器集合 堆栈注:线程自己不拥有系统资源&#…

Error: Invalid version flag: if 问题排查

问题描述: 国产化系统适配,arm架构的centos 在上面运行docker 启动后需要安装数据库 依赖perl 在yum install -y perl 时提示: “Error: Invalid version flag: if”

华为鸿蒙内核成为HarmonyOS NEXT流畅安全新基座

HDC2024华为重磅发布全自研操作系统内核—鸿蒙内核,鸿蒙内核替换Linux内核成为HarmonyOS NEXT稳定流畅新基座。鸿蒙内核具备更弹性、更流畅、更安全三大特征,性能超越Linux内核10.7%。 鸿蒙内核更弹性:元OS架构,性能安全双收益 万…

五种创建k8s的configMap的方式及configmap使用

configmap介绍 Kubernetes 提供了 ConfigMap 来管理应用配置数据,将配置信息从容器镜像中解耦,使应用更灵活、可移植。 1、基于一个目录来创建ConfigMap ​ 你可以使用 kubectl create configmap 基于同一目录中的多个文件创建 ConfigMap。 当你基于目…

如何将本地项目上传到gitee上

本地项目代码想上传到gitee管理、使用idea编辑器操作上传 新建仓库、填写信息 创建好了仓库,把HTTPS路径复制一下,之后会用到。 用命令进入项目进行git初始化 执行命令: cd 文件夹 git init 用idea把项目打开,然后配置一下gi…

大型语言模型LLM - Finetuning vs Prompting

资料来自台湾大学李宏毅教授机器学课程ML 2023 Spring,如有侵权请通知下架 台大机器学课程ML 2023 Springhttps://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.php2023/3/10 课程 機器如何生成文句 内容概要 主要探讨了大型语言模型的两种不同期待及其导致的两类…

Scikit-learn Pipeline完全指南:高效构建机器学习工作流

在机器学习工作流程中,组合估计器通过将多个转换器(Transformer)和预测器(Predictor)整合到一个管道(Pipeline)中,可以有效简化整个过程。这种方法不仅简化了数据预处理环节,还能确保处理过程的一致性,最大限度地降低数据泄露的风险。构建组合估计器最常用的工具是Scikit-learn…

kali Linux中foremost安装

记录一下 foremost工具介绍 foremost是基于文件开始格式,文件结束标志和内部数据结构进行恢复文件的程序。该工具通过分析不同类型文件的头、尾和内部数据结构,同镜像文件的数据进行比对,以还原文件。它默认支持19种类型文件的恢复。用户还可…

ChatGPT如何辅助academic writing?

今天想和大家分享一篇来自《Nature》杂志的文章《Three ways ChatGPT helps me in my academic writing》,如果您的日常涉及到学术论文的写作(writing)、编辑(editing)或者审稿( peer review)&a…

2024年11月26日Github流行趋势

项目名称:v2rayN 项目维护者:2dust yfdyh000 CGQAQ ShiinaRinne Lemonawa 项目介绍:一个支持Xray核心及其他功能的Windows和Linux图形用户界面客户端。 项目star数:70,383 项目fork数:11,602 项目名称:fre…

大数据面试SQL题-笔记02【查询、连接、聚合函数】

大数据面试SQL题复习思路一网打尽!(文档见评论区)_哔哩哔哩_bilibiliHive SQL 大厂必考常用窗口函数及相关面试题 大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】大数据面试SQL题-笔记02【查询、连接、聚合函数】​​​​​​​ 目录 01、查询 01…