SpringBoot项目启动时的依赖处理

导读:

既然 Maven 可以帮我们完成依赖的导入,那 SpringBoot 项目在 Idea 启动时是如何处理这些导入的依赖,使得项目启动成功后可以被正常访问呢?

一、以一个项目为例,观察项目启动后的 target 文件夹:

可以看到,项目启动后的 target 文件夹下出现了一些字节码文件和一些资源文件、配置文件等(在运行前特意将原有的 target 目录删除了),但是并没有出现引入的三方 jar 包,那程序在运行时是如何使用那些引用的三方 jar 包呢?

答案是类路径!

类路径(Classpath)是 Java 虚拟机(JVM)用来​​查找类文件、资源文件和依赖库的路径集合​​。在 Spring Boot 项目中,类路径的配置直接决定了应用能否正确编译、运行,以及依赖是否被正确加载。通过 ​​File > Project Structure > Modules > Dependencies​​,查看模块的类路径配置,如下:

以 SpringBoot 其中一个依赖可以看出,其路径正是我本地的仓库路径。

当然,SpringBoot 项目的启动过程不止上述提到的内容,这里不做赘述。

接下来,我们对类路径的配置进行详细说明。

二、类路径配置

1、类路径的作用​​

  • 类加载:JVM 通过类路径查找 .class 文件(编译后的 Java 类)。
  • 资源加载:应用可以通过类路径访问配置文件(如 application.yml)、静态资源(如 HTML、CSS)等。
  • 依赖加载:第三方库(如 Spring Framework、数据库驱动)的 JAR 文件需要包含在类路径中。

2、Maven 对类路径的配置​​

Maven 通过 pom.xml 中的依赖声明和构建生命周期,自动管理类路径。以下是关键机制:

​​1. 依赖的作用域(Scope)​​

Maven 的 <scope> 标签决定了依赖在不同阶段是否加入类路径:

  1. 依赖的传递性​​
  • 如果依赖 A 声明了依赖 B,且 B 的作用域为 compile,则 B 会被自动加入当前项目的类路径。
  • 依赖仲裁:通过 mvn dependency:tree 分析依赖树,解决版本冲突。

​​3. 资源文件的处理​​

Maven 默认将 src/main/resources 下的文件复制到 target/classes,并加入类路径。例如:

target/classes/

├── application.yml

└── static/

└── index.html

相关推荐
code2cat7 小时前
Java工具篇之Maven:从pom.xml到测试通过的JAR
xml·java·maven
wuminyu13 小时前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
txxzjmzlh13 小时前
SpringBoot 配置⽂件
java·spring boot·spring
ZhengEnCi13 小时前
模型训练完整流程:从数据准备到模型上线的 10 个关键步骤(全文可跑)
后端·算法
王中阳Go14 小时前
后端转 Agent 岗面试怎么答:8 个高频问题与应答口径
人工智能·后端·python·大语言模型
Wang's Blog14 小时前
Java 项目实战: 交友项目 - 搜索附近的功能概述和分析
java·开发语言·交友
程序猿DD14 小时前
OctaFuse Gateway 2.18.0:MCP 接入支持 OAuth,供应商粘性绑定可视化管理
后端
骑着蜗牛撵大象32714 小时前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
独泪了无痕14 小时前
Hutool之LocalDateTimeUtil:让时间间隔操作如虎添翼
java
三无少女指南15 小时前
从这里开始:Java 后端与 AI 工程的三条阅读路线
java·学习路线·ai工程