Springboot:2.1.1版本启动配置文件源码解析

Springboot之Jasypt配置文件加密/解密【源码分析】 Jasypt 是一个 java 库,可以使开发者不需要太多操作来给 Java 项目添加基本加密功能,而且不需要知道加密原理。Jasypt 为开发人员提供了一种简单易用加密功能,包括:密码认证、字符串加密等。那么Jasypt在 Springboot 项目中是如何运行的呢???在 Springboot 中,所以配置文件都是通过 Environment 来管理的,项目启动时,会先初始化 Environment 对象,然后通过 Springboot 自动装配机制,将 Environment 对象封装为 Proper 阅读详情

本文主要是通过debug来查看Springboot启动时如何加载resources目录下的配置文件:
SpringBoot刚开始执行的是SpringApplication类的run方法
在这里插入图片描述这个最终获得的environment对象就是我们在resources目录下配置的文件信息;

我们通过一个线程执行的过程来查看具体经过哪些类和方法:
ConfigFileApplicationListener类是Springboot获取配置文件的核心类,具体执行流程如下:
1、load()方法执行
在这里插入图片描述

第一个红框是获取profiles配置是测试还是预发
第二个红框是获取第一个需要加载的配置文件application.yml
第三个红框是根据application.yml文件中的spring.profiles.active:test来查找application-test.xml文件,这个application-{profiles}.xml是固定形式

第二个红框具体实现如下:
在这里插入图片描述getSearchLocations()方法主要是获取配置文件路径:通过这段forEach循环代码中我们可以看到是把每个取出的路径进行循环遍历

private static final String DEFAULT_SEARCH_LOCATIONS = "classpath:/,classpath:/config/,file:./,file:./config/";

在这里插入图片描述loader.getFileExtensions()方法获取后缀然后进行遍历,所以这是一个双循环,文件路径遍历然后再进行配置文件后缀名遍历,直到找到对应路径下的application.*(就是我们resources下所配置的文件,application是必须要这个名称,后缀就是下面所包含的任一后缀都可以查找到)文件
Springboot可以识别的四种配置文件后缀:
“properties”, “xml”,“yml”, “yaml”
debug代码如下:
在这里插入图片描述 PropertySourceLoader接口类的getFileExtensions()方法可以获得后缀字符串数组,主要是从两个实现类获取,分别是PropertiesPropertySourceLoader和YamlPropertySourceLoader类。
第三个红框具体实现如下:
执行流程是首先还是从getSearchLocations()获取默认的路径进行遍历,寻找application.yml文件中配置的需要加载的文件,例如application-test.yml,这个过程跟寻找application.yml类似,都是通过遍历来寻找文件(路径和后缀组合的方式),直到在对应路径下找到对应的文件才开始继续往下执行

private static final String DEFAULT_SEARCH_LOCATIONS = "classpath:/,classpath:/config/,file:./,file:./config/";

在这里插入图片描述在这里插入图片描述
获得配置信息后存储到对象中,方便后续调用;
这有一个链接,我看了下对springboot源代码执行步骤分析的比较透彻,可以参考看下:
https://www.cnblogs.com/lay2017/p/11478742.html

SpringBoot.run 启动过程源码解析 SpringBoot-启动过程源码解析 SpringBoot VERSION:2.1.x 这里使用的是Spring Boot 官方自带的Spring Boot Sample - SampleTomcatApplication。 启动前先设置参数: 启动类被 @SpringBootApplication注解修饰。跟踪run方法,我们可以看到跳转进入了SpringApplication类中: 继续往下: 新建SpringApplication实例 可以看到,new了一个SpringApplicati 阅读详情

相关推荐

Spring Boot加载配置文件的完整步骤

主要给大家介绍了关于Spring Boot加载配置文件的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

spring boot配置文件

SpringBoot使用一个全局的配置文件(核心配置文件)配置文件名在约定的情况下名字是固定的;配置文件名称只能叫application.properties 或者 application.yml配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好了2.2 两种配置文件的格式在springboot框架中,resource文件夹里可以存放配置的文件有两种:properties和yml。可共存和混用。

m0_64473908的博客 1293

保姆级教程:手把手带你复现APFNet论文的RGBT目标跟踪模型(附完整代码与数据集配置)

本文提供了一份详细的APFNet论文复现指南,涵盖从环境搭建到模型测试的全流程。通过解析多模态融合模块和渐进式训练流程,帮助读者高效完成RGBT目标跟踪模型的复现工作,特别针对训练和测试中的常见问题提供实用解决方案。

weixin_29056781的博客 341

SpringBoot自动配置底层源码解析

SpringBoot中众多的条件注解,都是基于Spring中的@Conditional来实现的,所以我们先来用一下@Conditional注解。先来看下@Conditional注解的定义/***/Class

MrLee的博客 1386

用AG9311芯片DIY一个多功能Type-C扩展坞:从原理图到PCB布局的保姆级指南

本文详细介绍了如何利用AG9311芯片DIY多功能Type-C扩展坞,涵盖从原理图设计到PCB布局的全过程。AG9311芯片作为高性价比的Type-C控制器,支持HDMI 2.0、USB 3.0、PD快充和千兆网口,适合硬件爱好者打造个性化扩展坞。文章还提供了调试技巧和进阶优化建议,帮助读者轻松完成项目。

weixin_42520909的博客 403

fMRI独立成分分析方法(ICA)工具GIFT

详细介绍了进行fmri数据进行ICA分析的工具包GIFT的使用,和进行ICA分析的流程。

m0_58256026的博客 1万+

springboot配置底层源码分析

3.利用工厂加载Map<string,list<string>>loadSpringFactories(@Nullable ClassLoader classloader),得到所有的组件。AutoConfigurationPackage:利用register给容器中导入一系列组件,将指定的一个包下的所有组件导入进来(mainAppliaction所在包下)。spring-boot-autoconfigure-2.3.4.RELEASE.jar包里面也有META-INF/spring.factories。

m0_66919292的博客 127

ROS2进程内通信:零拷贝Intra-Process原理与实战

Intra-Process通信是ROS2实现低延迟节点间数据交换的核心机制,其本质是通过C++17智能指针与零拷贝共享内存,在同一进程内绕过序列化、系统调用和上下文切换。相比传统DDS跨进程通信,它将`geometry_msgs::Twist`类消息延迟从42μs降至0.8μs,显著提升机器人实时控制性能。该技术并非自动启用,需满足同执行器、QoS严格匹配、内存所有权明确三大约束,适用于机械臂控制、视觉SLAM、图像处理流水线等对端到端延迟敏感的场景。本文聚焦ROS2原生Intra-Process通讯的原理

weixin_30619101的博客 361

Spring Boot 配置文件

Spring Boot 的配置文件主要用于定义应用的各类参数,例如端口号、数据库连接、日志级别等。YAML 格式Properties 格式默认情况下,Spring Boot 会从项目的目录下加载或文件。Spring Boot 支持在配置文件中定义自定义属性,并通过@Value或注解读取。Spring Boot 配置文件为应用提供了强大的配置管理能力,从基本的键值对配置到复杂的多环境管理,几乎覆盖了所有配置场景。

Flying_Fish_roe的博客 1298

IEEE LaTeX模板中algorithm排版避坑指南:如何优雅地嵌入算法描述?

本文详细解析了在IEEE LaTeX模板中优雅排版algorithm的实用技巧,包括基础配置、高级自定义及常见问题解决方案。通过嵌套环境与[H]参数的应用,帮助研究者克服IEEEtran模板对算法排版的限制,实现专业且美观的算法呈现。

weixin_28340315的博客 408

仿真系列专栏介绍

大家好!欢迎来到我的仿真学习系列专栏!这是一个我在学习仿真技术过程中整理和分享的系列文章。作为一名正在不断学习和实践的工程师,我希望通过这个专栏,和大家一起探索仿真技术,尤其是在高速信号完整性方面的应用。

案例文章,高速信号 364

【Spring Boot】自动配置源码解析

定义需要自动装配的类信息:@Configuration、@Bean,SpringBoot配置类。设置自动配置条件依赖:@Conditional。将外部配置文件读取并封装成Bean,让配置类读取参数:@EnableConfigurationProperties、@ConfigurationProperties。实现Bean的发现与加载:@EnableAutoConfiguration、@Import。

m0_74824845的博客 1024

深入浅出:大型语言模型(LLM)的全面解读

在当今的数字化时代,人工智能技术已经成为各行各业的核心驱动力之一。而在人工智能的领域中,大型语言模型(LLM)作为一种引人瞩目的技术,正在以其强大的语言理解和生成能力引领着一场革命。本文旨在深入浅出地解读大型语言模型,探讨其背后的原理、技术突破、应用场景以及未来发展趋势。

fudaihb的博客 10万+

SpringBoot源码解析:Environment加载配置原理(1)

本文是基于springboot2.1.6源码解析 本篇主要是介绍,spring怎么加载解析配置文件到environment中。至于怎么获取environment中配置,怎么绑定environment到对象中,另开篇再介绍。不想看源码,直接看总结 1. SpringApplication介绍 SpringApplication的run方法 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch =.

Java动物园的专栏 2104

【WRF安装第三期(Ubuntu)】搭建WRF编译所需系统-第三方依赖库安装

WRF安装第三期:搭建WRF编译所需系统-第三方依赖库安装

WW、forever的博客 3137

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SpringBoot学习笔记01-自动配置原理的源码解析

SpringBoot自动配置

Programmerist的专栏 418

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SpringBoot启动全流程源码解析(超详细版)

我们在使用SpringBoot启动项目的时候,可能只需加一个注解,然后启动main,整个项目就运行了起来,但事实真的是所见即所得吗,还是SpringBoot在背后默默做了很多?本文会通过源码解析的方式深入理解SpringBoot启动全过程 SpringBoot启动过程流程图 源码解析 大家不要抗拒源码解析,这个非常优秀的代码,我们如果能够学会对自己代码编写水平大有裨益 首先,我们先来看下SpringBoot项目的启动类 @SpringBootApplication public class Sp.

July的博客 2万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SpringBoot源码解析(三):启动开始阶段

前文深入解析了引导上下文作为组件存储容器的角色,接下来将进入启动开始阶段的内容。SpringBoot版本2.7.18SpringApplication的run方法的执行逻辑如下,本文将详细介绍第二小节:获取启动监听器,调用启动开始方法// SpringApplication类方法// 记录应用启动的开始时间// 1.创建引导上下文,用于管理应用启动时的依赖和资源// 配置无头模式属性,以支持在无图形环境下运行// 将系统属性 java.awt.headless 设置为 true。

从基础到源码解析的学习记录 3406

SpringBoot2 | SpringBoot启动流程源码分析(一)

概述: 前阵子看到了SpringCloud社区的一个开源项目,主要是对服务发现增强的功能。研究项目的时候发现代码简练,优雅,最主要是spring ioc和aop特性应用的得心应手。若非对源码有深入研究,不可能写出这么优秀的开源项目。另外在现有的springboot专栏中,大多数博文旨在应用,对一些中间件的整合之类,源码分析的博客数量有限。鉴于以上两方面,该系列应运而生。 该系列主要还是Spri...

程序员阿康 13万+

SpringBoot 源码解析2:启动流程

在onApplicationEnvironmentPreparedEvent方法中,加载了spring.factories文件中的所有EnvironmentPostProcessor,并且把当前对象放入到集合中,然后根据order排序,再回调postProcessEnvironment方法。根据不同的webApplicationType创建不同的ApplicationContext,这里创建的是AnnotationConfigServletWebServerApplicationContext。

java_xiaoba1的博客 2576

SpringBoot 启动流程

方法来启动 Spring Boot 应用程序。该方法接受两个参数,第一个参数是启动类的类对象,第二个参数是主方法的参数。方法中做了一系列操作来完成项目启动所需的初始化Spring容器、启动内置tomcat、启动应用程序以及通知监听者等步骤。总的来说,Spring Boot的启动过程是一个复杂的流程,从启动类的Main方法中调用。启动类必须使用 @SpringBootApplication 注解标记该类。方法开始,然后在SpringApplication对象的。方法来执行项目启动的后续操作。

qq_33807380的博客 9554

SpringBoot——SpringBoot启动原理

本博文将介绍SpringBoot启动原理,帮助大家更好的理解相关springboot的原理。更好在面试中回答面试问题。

庄小焱 8720

SpringBoot启动过程源码解析

默认情况下SpringBoot提供了一个EventPublishingRunListener,它实现SpringApplicationRunListener接口,默认情况下会利用EventPublishingRunListener发布一个ApplicationContextInitializedEvent事件,程序员可以通过定义ApplicationListener来消费这个事件。中传入进来的类,比如MyApplication.class,作为Spring容器的配置类。

野心与梦 2万+

springboot2|springboot启动流程源码分析:tomcat启动原理

本文基于springboot2.1.6 1 当maven引入tomcat的jar依赖时 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifac...

ice-wee的专栏 1660

【SpringBoot】SpringBoot启动源码解析

SpringBoot启动源码解析

持续学习,坚持原创,分享技术笔记及经验。 724
上一篇: Springboot打成jar包和war包部署到linux上的方式
下一篇: java.lang.IllegalArgumentException: INVOKESPECIAL/STATIC on interfaces require ASM 5
程序猿-日记本
博客等级 码龄10年 204粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值