类路径classpath与classpath*的区别

两者的区别主要在于如何搜索和加载资源。

classpath,即 class path(类的路径),Java 编译之后.class 文件存在的路径。

两者区别:

  • classpath:用于引用单个资源。当使用classpath前缀时,Spring将从类路径中搜索资源,并在找到第一个匹配的资源后立即停止搜索。这意味着,如果在多个jar文件或文件夹中存在具有相同名称的资源,classpath只会加载找到的第一个资源。

  • classpath*:用于加载类路径中的所有匹配资源。当使用classpath*时,Spring将遍历整个类路径,寻找所有与指定模式匹配的资源,并将它们全部加载。这对于模块化应用程序非常有用,因为它允许加载分布在多个jar文件或文件夹中的配置文件,但是请注意这将极其消耗资源!

举个例子:

假设我们有以下文件系统结构:

my-app
├── src
│   └── main
│       └── resources
│           ├── applicationContext.xml
│           ├── module1
│               ├── A.xml
│           ├── module2
│               └── A.xml

classpath 加载单个文件 A.xml(即找到第一个为止)

<import resource="classpath:A.xml"/>

classpath* 批量加载文件 A.xml(这里会加载 module1 和 module2 下的 A.xml)

<import resource="classpath*:A.xml"/>

猜你喜欢

转载自blog.csdn.net/qq_35760825/article/details/129733714