当前位置: 首页 > news >正文

SpringBoot的配置(配置文件、加载顺序、配置原理)

文章目录

  • SpringBoot的配置(配置文件、加载顺序、配置原理)
    • 一、引言
    • 二、配置文件
      • 1、配置文件的类型
        • 1.1、配置文件的使用
      • 2、多环境配置
    • 三、加载顺序
    • 四、配置原理
    • 五、使用示例
      • 1、配置文件
      • 2、配置类
      • 3、控制器
    • 六、总结

SpringBoot的配置(配置文件、加载顺序、配置原理)

在这里插入图片描述

一、引言

Spring Boot的配置机制是其核心功能之一,它通过灵活的配置文件、明确的加载顺序以及强大的配置原理,极大地简化了Spring应用的开发过程。本文将详细介绍Spring Boot的配置文件、加载顺序以及配置原理,并通过代码示例帮助读者更好地理解和应用这些知识。

二、配置文件

1、配置文件的类型

Spring Boot支持两种主要的配置文件格式:application.propertiesapplication.yml。这两种文件格式各有特点:

  • application.properties:基于键值对的形式,适合简单的配置项。
  • application.yml:基于YAML格式,支持嵌套结构,适合复杂的配置。
1.1、配置文件的使用

配置文件通常放在项目的src/main/resources目录下。例如,以下是一个application.properties文件的示例:

properties复制

server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456

对于application.yml文件,可以使用嵌套结构来组织配置:

yaml复制

server:port: 8082
spring:datasource:url: jdbc:mysql://localhost:3306/testusername: rootpassword: 123456

2、多环境配置

Spring Boot支持多环境配置,可以通过spring.profiles.active属性激活特定的环境配置。例如:

properties复制

# application.properties
spring.profiles.active=dev

然后可以创建application-dev.propertiesapplication-dev.yml文件来定义开发环境的配置。

三、加载顺序

Spring Boot的配置加载顺序决定了最终生效的配置:

  1. 默认配置:Spring Boot框架内部的默认配置,例如Tomcat的默认端口8080。
  2. classpath根目录下的配置文件application.propertiesapplication.yml。如果两个文件都存在,application.yml中的配置会覆盖application.properties中的配置。
  3. 命令行参数:通过命令行参数传递的配置,例如--server.port=8083
  4. 环境变量:通过环境变量设置的配置,例如SERVER_PORT=8084

四、配置原理

Spring Boot的配置原理主要依赖于@EnableAutoConfiguration注解和spring.factories文件:

  • @EnableAutoConfiguration:该注解会扫描spring.factories文件中列出的自动配置类,并根据条件判断是否加载这些类。
  • spring.factories:该文件位于每个依赖包的classpath下,列出了当前包所提供的自动配置类。例如:

properties复制

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration

五、使用示例

以下是一个简单的示例,展示如何通过@ConfigurationProperties注解读取配置文件中的内容:

1、配置文件

yaml复制

student:id: 1name: zhangsanage: 18

2、配置类

java复制

package com.example.demo.model;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "student")
@Data
public class Student {private Integer id;private String name;private Integer age;
}

3、控制器

java复制

package com.example.demo.controller;import com.example.demo.model.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class StudentController {@Autowiredprivate Student student;@RequestMapping("/readStudent")public String readStudent() {return student.toString();}
}

访问http://localhost:8080/readStudent,将返回学生的信息。

六、总结

Spring Boot的配置机制通过灵活的配置文件、明确的加载顺序和强大的配置原理,极大地简化了Spring应用的开发过程。通过application.propertiesapplication.yml文件,开发者可以轻松地管理应用的配置,并通过@ConfigurationProperties注解将配置项绑定到Java对象中。同时,了解配置的加载顺序和原理有助于更好地使用Spring Boot的自动配置功能。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • Spring Boot 配置加载顺序:揭开神秘面纱,掌握配置精髓
  • Spring Boot 自动配置机制:从原理到自定义

相关文章:

SpringBoot的配置(配置文件、加载顺序、配置原理)

文章目录 SpringBoot的配置(配置文件、加载顺序、配置原理)一、引言二、配置文件1、配置文件的类型1.1、配置文件的使用 2、多环境配置 三、加载顺序四、配置原理五、使用示例1、配置文件2、配置类3、控制器 六、总结 SpringBoot的配置(配置文件、加载顺序、配置原理) 一、引言…...

如何本地部署DeepSeek?DeepThink R1 本地部署全攻略:零基础小白指南。

🚀 离线运行 AI,免费使用 OpenAI 级别推理模型 本教程将手把手教你如何在本地部署 DeepThink R1 AI 模型,让你无需联网就能运行强大的 AI 推理任务。无论你是AI 新手还是资深开发者,都可以轻松上手! 📌 目录…...

陆游的《诗人苦学说》:从藻绘到“功夫在诗外”(中英双语)mastery lies beyond poetry

陆游的《诗人苦学说》:从藻绘到“功夫在诗外” 今天看万维钢的《万万没想到》一书,看到陆游的功夫在诗外的句子,特意去查找这首诗的原文。故而有此文。 我国学人还往往过分强调“功夫在诗外”这句陆游的名言,认为提升综合素质是一…...

Golang —协程池(panjf2000/ants/v2)

Golang —协程池(panjf2000/ants/v2) 1 ants1.1 基本信息1.2 ants 是如何运行的(流程图) 1 ants 1.1 基本信息 代码地址:github.com/panjf2000/ants/v2 介绍:ants是一个高性能的 goroutine 池&#xff0c…...

在 crag 中用 LangGraph 进行评分知识精炼-下

在上一次给大家展示了基本的 Rag 检索过程,着重描述了增强检索中的知识精炼和补充检索,这些都是 crag 的一部分,这篇内容结合 langgraph 给大家展示通过检索增强生成(Retrieval-Augmented Generation, RAG)的工作流&am…...

基于springboot+vue的哈利波特书影音互动科普网站

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...

Cypher入门

文章目录 Cypher入门创建数据查询数据matchoptional matchwhere分页with 更新数据删除数据实例:好友推荐 Cypher入门 Cypher是Neo4j的查询语言。 创建数据 在Neo4j中使用create命令创建节点、关系、属性数据。 create (n {name:$value}) return n //创建节点&am…...

使用Z-score进行数据特征标准化

数据标准化是数据处理过程中非常重要的一步,尤其在构建机器学习模型时尤为关键。标准化的目的是将不同量纲的变量转换到相同的尺度,以避免由于量纲差异导致的模型偏差。Z-score标准化是一种常见且简单的标准化方法,它通过计算数据点与平均值的差异,并将其按标准差进行缩放,…...

初级数据结构:栈和队列

一、栈 (一)、栈的定义 栈是一种遵循后进先出(LIFO,Last In First Out)原则的数据结构。栈的主要操作包括入栈(Push)和出栈(Pop)。入栈操作是将元素添加到栈顶,这一过程中&#xf…...

【思维导图】java

学习计划:将目前已经学的知识点串成一个思维导图。在往后的学习过程中,不断往思维导图里补充,形成自己整个知识体系。对于思维导图里的每个技术知识,自己用简洁的话概括出来, 训练自己的表达能力。 面向对象三大特性 …...

Redis脑裂问题详解及解决方案

Redis是一种高性能的内存数据库,广泛应用于缓存、消息队列等场景。然而,在分布式Redis集群中,脑裂问题(Split-Brain)是一个需要特别关注的复杂问题。本文将详细介绍Redis脑裂问题的成因、影响及解决方案。 一、什么是…...

玩转大语言模型——配置图数据库Neo4j(含apoc插件)并导入GraphRAG生成的知识图谱

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型——使用GraphRAGOllama构建知识图谱 玩转大语言模型——完美解决Gra…...

【Windows Server实战】生产环境云和NPS快速搭建

前置条件 本文假定你已达成以下前提条件: 有域控DC。有证书服务器(AD CS)。已使用Microsoft Intune或者GPO为客户机申请证书。服务器上至少有两张网卡(如果用虚拟机做的测试环境,可以用一张HostOnly网卡做测试&#…...

[ESP32:Vscode+PlatformIO]新建工程 常用配置与设置

2025-1-29 一、新建工程 选择一个要创建工程文件夹的地方,在空白处鼠标右键选择通过Code打开 打开Vscode,点击platformIO图标,选择PIO Home下的open,最后点击new project 按照下图进行设置 第一个是工程文件夹的名称 第二个是…...

【NLP251】Transformer精讲 残差链接与层归一化

精讲部分,主要是对Transformer的深度理解方便日后从底层逻辑进行创新,对于仅应用需求的小伙伴可以跳过这一部分,不影响正常学习。 1. 残差模块 何凯明在2015年提出的残差网络(ResNet),Transformer在2016年…...

康德哲学与自组织思想的渊源:从《判断力批判》到系统论的桥梁

康德哲学与自组织思想的渊源:从《判断力批判》到系统论的桥梁 第一节:康德哲学中的自然目的论与自组织思想 核心内容: 康德哲学中的自然目的论和反思判断力概念,为现代系统论中的自组织思想提供了哲学基础,预见了复…...

SpringBoot 整合 SpringMVC:SpringMVC的注解管理

分类&#xff1a; 中央转发器(DispatcherServlet)控制器视图解析器静态资源访问消息转化器格式化静态资源管理 中央转发器&#xff1a; 中央转发器被 SpringBoot 自动接管&#xff0c;不需要我们在 web.xml 中配置&#xff1a; <servlet><servlet-name>chapter2&l…...

松灵机器人 scout ros2 驱动 安装

必须使用 ubuntu22 必须使用 链接的humble版本 #打开can 口 sudo modprobe gs_usbsudo ip link set can0 up type can bitrate 500000sudo ip link set can0 up type can bitrate 500000sudo apt install can-utilscandump can0mkdir -p ~/ros2_ws/srccd ~/ros2_ws/src git cl…...

使用 Numpy 自定义数据集,使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数

1. 导入必要的库 首先&#xff0c;导入我们需要的库&#xff1a;Numpy、Pytorch 和相关工具包。 import numpy as np import torch import torch.nn as nn import torch.optim as optim from sklearn.metrics import accuracy_score, recall_score, f1_score2. 自定义数据集 …...

MapReduce简单应用(一)——WordCount

目录 1. 执行过程1.1 分割1.2 Map1.3 Combine1.4 Reduce 2. 代码和结果2.1 pom.xml中依赖配置2.2 工具类util2.3 WordCount2.4 结果 参考 1. 执行过程 假设WordCount的两个输入文本text1.txt和text2.txt如下。 Hello World Bye WorldHello Hadoop Bye Hadoop1.1 分割 将每个文…...

5分钟免费获取:开源鼠标连点器MouseClick完整使用指南

5分钟免费获取&#xff1a;开源鼠标连点器MouseClick完整使用指南 【免费下载链接】MouseClick &#x1f5b1;️ MouseClick &#x1f5b1;️ 是一款功能强大的鼠标连点器和管理工具&#xff0c;采用 QT Widget 开发 &#xff0c;具备跨平台兼容性 。软件界面美观 &#xff0c;…...

Python自动化股票分析工具:从数据采集到可视化报告全流程实战

1. 项目概述&#xff1a;一个面向个人投资者的自动化股票分析工具如果你和我一样&#xff0c;是个对A股市场有点兴趣&#xff0c;但又没时间天天盯盘的上班族&#xff0c;那你肯定也经历过这种纠结&#xff1a;早上开盘前想看看心仪的几只股票有没有什么异动&#xff0c;结果一…...

基于Docker构建标准化开发环境:原理、实践与VSCode集成指南

1. 项目概述&#xff1a;一个面向开发者的“开箱即用”环境在软件开发这条路上&#xff0c;我踩过最多的坑&#xff0c;往往不是来自复杂的业务逻辑&#xff0c;而是来自那句“在我机器上好好的”。环境配置&#xff0c;这个看似基础却又无比磨人的环节&#xff0c;消耗了无数开…...

Grad-CAM实战:用热力图透视神经网络的决策焦点

1. Grad-CAM技术初探&#xff1a;为什么我们需要热力图&#xff1f; 当你训练了一个图像分类模型&#xff0c;准确率高达95%&#xff0c;但你真的了解它是如何做出判断的吗&#xff1f;我曾在项目中遇到过这样的尴尬&#xff1a;模型把一只坐在草地上的哈士奇误判为"狼&qu…...

如何在Windows上无缝安装安卓应用:APK安装器终极指南

如何在Windows上无缝安装安卓应用&#xff1a;APK安装器终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾在电脑上羡慕安卓应用的便利&#xff0c;却苦…...

Pro Trinket:Arduino UNO的紧凑型替代方案与双模编程实战

1. Pro Trinket&#xff1a;当Arduino遇上“口袋工程学”如果你和我一样&#xff0c;在创客圈子里摸爬滚打多年&#xff0c;肯定经历过这样的场景&#xff1a;一个基于Arduino UNO的酷炫原型在面包板上运行得风生水起&#xff0c;但当你试图把它塞进一个精致的3D打印外壳&#…...

Proof Engine:简化零知识证明开发,降低区块链应用门槛

1. 项目概述&#xff1a;Proof Engine&#xff0c;一个为现代开发者设计的证明引擎如果你和我一样&#xff0c;在构建需要复杂逻辑验证、状态证明或零知识证明&#xff08;ZKP&#xff09;相关应用时&#xff0c;常常感到头疼——工具链复杂、学习曲线陡峭、不同框架间的兼容性…...

ARM架构寄存器与参数管理核心技术解析

1. ARM架构寄存器与参数管理基础解析 在ARM架构的底层开发中&#xff0c;寄存器与参数管理是系统控制和调试的核心机制。作为嵌入式开发者&#xff0c;我经常需要与这两种资源打交道&#xff0c;它们虽然都用于存储数据&#xff0c;但在使用场景和特性上存在本质差异。 寄存器…...

藏文语音生成准确率从61.2%跃升至94.8%:ElevenLabs Fine-tuning私有数据集构建全流程(含217小时母语者录音标注规范)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;藏文语音生成技术演进与ElevenLabs适配挑战 藏文作为具有复杂音节结构、声调隐含性及丰富上下文依赖的黏着语系文字&#xff0c;其语音合成长期受限于高质量标注语料稀缺、音素-音节映射不唯一、以及缺…...

5个实用技巧:在Windows电脑上畅享酷安社区的最佳体验

5个实用技巧&#xff1a;在Windows电脑上畅享酷安社区的最佳体验 【免费下载链接】Coolapk-UWP 一个基于 UWP 平台的第三方酷安客户端 项目地址: https://gitcode.com/gh_mirrors/co/Coolapk-UWP 还在用手机小屏幕刷酷安吗&#xff1f;Coolapk UWP桌面版为你带来了全新的…...