路径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,如我们在这里做的静态映射
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

到底什么时候该使用MQ?

一、缘起 一切脱离业务的架构设计与新技术引入都是耍流氓。 引入一个技术之前&#xff0c;首先应该解答的问题是&#xff0c;这个技术解决什么问题。 就像微服务分层架构之前&#xff0c;应该首先回答&#xff0c;为什么要引入微服务&#xff0c;微服务究竟解决什么问题&…

Java中ByteArrayInputStream和ByteArrayOutputStream用法详解

Java中ByteArrayInputStream和ByteArrayOutputStream用法详解 这篇文章主要介绍了Java中ByteArrayInputStream和ByteArrayOutputStream用法详解&#xff0c; ByteArrayInputStream 的内部额外的定义了一个计数器&#xff0c;它被用来跟踪 read() 方法要读取的下一个字节 Byte…

Java中的Base64详解

详解Java中的Base64原理跟用法 简介 ​ Base64编码&#xff0c;是我们程序开发中经常使用到的编码方法。它是一种基于用64个可打印字符来表示二进制数据的表示方法。它通常用作存储、传输一些二进制数据编码方法, 也是MIME&#xff08;多用途互联网邮件扩展&#xff0c;主要用…

Java程序执行Linux命令

java程序中要执行linux命令主要依赖2个类&#xff1a;Process和Runtime 首先看一下Process类&#xff1a; ProcessBuilder.start() 和 Runtime.exec 方法创建一个本机进程&#xff0c;并返回 Process 子类的一个实例&#xff0c; 该实例可用来控制进程并获得相关信息。Proces…

ImageIO类说明

最近的项目中遇到ImageIO&#xff0c;因此记录下这个类的用法 一、ImageIO&#xff1a; 这个类中的方法都是静态方法&#xff0c;可以用来进行简单的图片IO操作 1、读入的三种方法 public static BufferedImage read(File input) File file new File("/Users/xixi/Docum…

java:图像(BufferedImage)色彩空间转换(灰度)暨获取图像矩阵数据byte[](sRGB/gray)

ColorConvertOp java.awt.image包下面有个类java.awt.image.ColorConvertOp,类名直译就是”颜色转换操作”。 顾名思义,它的作用就是将一个色彩空间(color space)的图像转换为另一个色彩空间的图像。有了这个神器我们就能轻易的将一张彩色图你像转换成灰度(gray)或其他色彩空间…

MyBatis-Plus updateById方法更新不了空字符串/null解决方法

最近遇到了Mybatis-Plus updateById()&#xff0c;更新某一个字段为null&#xff0c;却发现没有更新成功。记录一下 一、简介 因为最近在忙项目&#xff0c;好久都没有更新博客&#xff0c;最近在项目中刚好遇到一个问题&#xff0c;就是在使用MyBatis-Plus updateById&#…

Java 分割字符串的方法String.split()底层原理与使用

文章目录split()底层原理1.举例说明2.split源码分析3.API原解4.regex参数API原解5.limit参数介绍6.结果的验证7.此方法的使用split方法的使用split用法分析参数解释—regex参数解释—limit不同limit值的情况下的split结果验证扩展split()底层原理 1.举例说明 1.最普通的用法 …

MySQL中数据类型的长度问题解析

MySQL中数据类型的长度问题总结 1&#xff09;&#xff1a;int类型&#xff0c;对吧&#xff0c;经常像保存个时间戳啊、id啊、数量啊、排序啊都会用到 提问&#xff1a;INT&#xff08;11&#xff09;是什么意思&#xff1f;最大保存十一位数么&#xff1f; 回答&#xff1a;…

HttpComponents入门解析

1 简介 超文本传输协议(http)是目前互联网上极其普遍的传输协议&#xff0c;它为构建功能丰富&#xff0c;绚丽多彩的网页提供了强大的支持。构建一个网站&#xff0c;通常无需直接操作http协议&#xff0c;目前流行的WEB框架已经透明的将这些底层功能封装的很好了&#xff0c…

HttpClient使用和详解

文章目录一、关于HttpClient二、HttpClient使用步骤详解1、创建一个HttpClient对象A、HttpCLientConnectionManagerB、HttpRoutePlannerC、RequestConfig2、创建一个Request对象3、执行Request请求4、处理response1&#xff09;关闭和entity相关的content stream2&#xff09;关…

你还在 Docker 中跑 MySQL?

容器的定义&#xff1a;容器是为了解决“在切换运行环境时&#xff0c;如何保证软件能够正常运行”这一问题。 目前&#xff0c;容器和 Docker依旧是技术领域最热门的词语&#xff0c;无状态的服务容器化已经是大势所趋&#xff0c;同时也带来了一个热点问题被大家所争论不以&…

使用mybatis-plus来自定义排序

需求&#xff1a; 先时间升序排序&#xff0c;相同的时间在按状态排序&#xff0c;状态的顺序为1 在线 4 潜伏 2 隐身 3 离开&#xff0c;状态相同在按姓名升序排序对排序好的数据进行分页运用mybatis-plus中QueryWrapper 1.导入依赖 <dependencies><dependency>…

Postman实现接口测试(附项目实战)

文章目录Postman实现接口测试1.Postman介绍和安装2. Postman安装2.1 安装方式2.2 安装步骤3. Postman入门示例Postman基本用法Postman高级用法1. 管理用例2. Postman断言3. 全局变量与环境变量5. Postman关联6. 批量执行测试用例7. 读取外部文件实现参数化Postman测试报告目标项…

Postman 使用教程详解

Postman页面 2、新建一个项目 直接点击左边栏上面的添加目录图标来新增一个根目录&#xff0c;这样就等于新建了一个项目&#xff0c;我们可以把一个项目或一个模块的用例都存放在这个目录之下&#xff0c;并且在根目录之下我们还可以在建立子目录来进行功能用例的细分&#…

聊聊@Autowired注解注入,写接口名字还是实现类的名字

用Autowired注解注入,写接口名字还是实现类的名字 来自某程序员一个问答问题 有一点没明白&#xff0c;为什么注解repository注解的是接口UserDAO的实现类UserDAOImpl&#xff0c;而在UserServiceImpl中使用Autowired注解注入属性private UserDAO userDAO自动装配&#xff0c…

Spring注入接口还是实现类,同一接口有多个实现类,如何注入

1、接口&#xff1a;IUserService public interface IUserService {public void sayHello(); }2、实现类&#xff1a;UserServiceImpl&#xff0c;实现了UserService接口 Service("UserServiceImpl ") public class UserServiceImpl implements IUserService{// 添…

Spring只能注入接口,不能注入实现类

只能注入接口&#xff0c;不能注入实现类。 Controller public class Test {AutowiredprivateRoleDao rdi; }privateRoleDao是个接口 这样注入就没有问题&#xff0c; 而注入 Controller public class Test {AutowiredprivateRoleDaoImpl rdi; }会报错&#xff1a;No qua…

调用Dubbo报错: com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method 问题原因和解决办法

我们在使用Dubbo的过程中&#xff0c;时常会碰到这个异常。而有可能导致这个异常的原因是非常多的&#xff0c;排查起来比较困难。下面把如何排查该问题的思路整理了一下&#xff0c;目前我知道的会导致这个异常的原因分为以下几类&#xff1a; 1.需要进行序列化的POJO类没有进…

Springboot dubbo @Service @Transactional 无法提供服务或者无法提供事务的解决办法

问题场景&#xff1a; 今天在springboot中集成spring事务的时候&#xff0c;遇到了一个大坑。如果&#xff08;springbootdubbo&#xff09;中添加 Service、Transactional 两个注解的时候&#xff0c;就不能进行dubbo服务注册了。 解决历程&#xff1a; 1&#xff0c;先是在…