在 Spring 框架中,ApplicationContext 在启动时需要加载配置文件(如 XML 配置或其他资源文件),而这些配置文件可能位于 不同的位置。
Spring 为此提供了统一的资源加载机制(Resource Loader),使应用程序可以从 类路径、文件系统、网络地址或 Web 容器路径 等不同来源读取配置。
常见的配置加载路径主要包括:
- Classpath(类路径)
- File System(文件系统路径)
- URL(网络资源路径)
- ServletContext(Web 容器路径)
- classpath*(通配符类路径)
不同路径适用于不同的项目环境和部署方式。
一、Classpath 路径
1.1 什么是 Classpath 路径
Classpath 指的是 Java 类路径(ClassPath)中的资源位置。
在 Maven 或 Gradle 项目中,classpath 通常包括:
src/main/resourcestarget/classes- 项目依赖的 jar 包
当 Spring 从 classpath 加载配置文件时,实际上是从 Java 运行时的类路径中查找资源。
例如:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
或者:
classpath:applicationContext.xml
如果配置文件位于:
src/main/resources/applicationContext.xml
项目编译后会被复制到:
target/classes/applicationContext.xml
1.2 适用场景
classpath 是 最常见的配置加载方式,适用于:
- Spring Boot 项目
- Maven / Gradle 项目
- 配置文件需要随应用一起打包
- jar 包独立运行的场景
例如 Spring Boot 项目通常使用:
application.yml
application.properties
这些配置文件通常都位于 classpath 中。
这种方式的优点是:
- 项目结构清晰
- 配置随应用发布
- 部署简单
但缺点是 配置文件无法在运行时直接修改,如果需要修改配置,通常需要重新打包或重启应用。
二、文件系统路径(File System)
2.1 什么是文件系统路径
文件系统路径是指 操作系统中的真实文件路径,Spring 可以直接从磁盘读取配置文件。


