关于classpath与classpath*的区别

本文详细解析了classpath与classpath*的区别,包括它们在加载配置文件时的作用范围,以及在Maven多模块开发中的应用。同时,文章还介绍了如何在不同场景下选择合适的加载方式,以提高程序运行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      在我们加载配置文件的时候,经常会见到classpath或者classpath的写法,那么这两种写法有什么区别呢。
      classpath表示加载当前模块下的类路径中的配置文件,而classpath
可以加载jar包中的配置文件。
      例如在maven的多模块SSM开发中,如果想在dao层配置了mybatis的配置文件,在service层配置了spring的配置文件,在webapp层想要加载使用这两个配置文件的话,就要写classpath*:“文件位置”(dao层和service层在maven多模块开发中都是以jar包的方式打包的)。相应的,如果将配置文件全部写在webapp层,在webapp层想要加载时就可以使用classpath:“文件位置” 而不是classpath*:“文件位置” 的方式了,这样更节省加载时间。

classpath和classpath*区别:

classpath:只会到你的class路径中查找找文件。
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找。
注意: 用classpath*:需要遍历所有的classpath,所以加载速度是很慢的;因此,在规划的时候,应该尽可能规划好资源文件所在的路径,尽量避免使用classpath*。

classpath*的使用:

当项目中有多个classpath路径,并同时加载多个classpath路径下(此种情况多数不会遇到)的文件,就发挥了作用,如果不加,则表示仅仅加载第一个classpath路径。
一些使用技巧:
1、从上面使用的场景看,可以在路径上使用通配符进行模糊查找。
2、"/“表示的是任意目录;”**/applicationContext-
.xml"表示任意目录下的以"applicationContext-"开头的XML文件。
3、程序部署到tomcat后,src目录下的配置文件会和class文件一样,自动copy到应用的WEB-INF/classes目录下;classpath:与classpath*:的区别在于,前者只会从第一个classpath中加载,而 后者会从所有的classpath中加载。
4、如果要加载的资源,不在当前ClassLoader的路径里,那么用classpath:前缀是找不到的,这种情况下就需要使用classpath*:前缀。
5、在多个classpath中存在同名资源,都需要加载时,那么用classpath:只会加载第一个,这种情况下也需要用classpath*:前缀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值