路径classpath,classpath*,以及file:

./ 当前目录 …/上一层目录 /是根目录

1. classpath :

类路径,指的是编译后的字节码文件存储路径,一般为target目录下的classes目录(java项目),在web项目中指的是WEB-INF下的classes目录。实际上,两者其实是一致的,web项目的classes目录也是工程编译后的产物。

举个栗子 classpath:applicationContext.xml 表示仅会去当前工程的类路径下寻找applicationContext.xml文件,而且只会在classes这一次层找,如果配置在下一层,比如classes/spring文件夹下,是不会进行搜索的,这时候就该这么配置classpath:spring/applicationContext.xml。

2. classpath*:

不仅包含class路径,还包括jar文件中(class路径)进行查找。而且不仅限于classes当前目录下,也会对其子目录进行搜索。(已验证正确性)

classpath*的使用是为了多个component(最终发布成不同的jar包)并行开发,各自的bean定义文件按照一定规则:package+filename,而使用这些component的调用者可以把这些文件都加载进来。classpath*的加载使用了classloader的 getResources() 方法,用classpath*需要遍历所有的classpath,所以加载速度是很慢的。

3. file:

作为URL从文件系统中加载,这种方式通常配置相对路径,相对于当前路径。另外file:///通常表示的是本地文件的绝对路径。这里要注意一下,从文件系统中加载,意味着路径结构对应的是电脑的实际目录,jar包内部的目录结构是不使用的,它将被视为一个整体的文件。

imgimg

举个例子:图示jar包为一个可执行jar包,在选择配置时,如果想选择图1中独立出来的conf文件下的配置,需要使用

<import resource="file:./conf/nacos.xml"/>

显然这里的相对路径相对的基点不再是app.xml所在的项目中的路径,而是整个jar包相对于电脑的文件系统路径,它和外部conf文件是同一层级的。

如果想使用图2项目中设置的配置nacos.xml,就可以配置路径方式为

<import resource="nacos.xml"/>

这里的相对路径很明显就是相对于当前工程了。

附:在打包某个工程时,要求将依赖一起合并打成一个可执行jar包,这时候就需要将依赖加入到classpath中(具体做法参考maven部分笔记),此时classpath classpath* 就没有什么区别了~~

img



classpath,classpath*,file的区别

classpath

从项目编译后的根路径下开始寻找文件,也就是我们常说的classes路径
在这里插入图片描述

classpath*(不常用)

不仅包含class路径,还包括jar文件中(class路径)进行查找

file

file指的是宿主机上的路径,也称作url,如果我们的项目在windows上跑,宿主机就是windows,在linux上跑,宿主机就是linux,如我们在这里做的静态映射
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Archie_java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值