首页 > 其他分享 >classpath和classpath*区别

classpath和classpath*区别

时间:2023-11-10 09:11:56浏览次数:21  
标签:xml 文件 区别 spring 路径 classpath 加载

classpath: 和 classpath*: 的含义

classpath: 表示从类路径中加载资源,classpath:和classpath:/是等价的,都是相对于类的根路径。资源文件库标准的在文件系统中,也可以在JAR或ZIP的类包中。

classpath*:假设多个JAR包或文件系统类路径都有一个相同的配置文件,classpath:只会在第一个加载的类路径下查找,而classpath*:会扫描所有这些JAR包及类路径下出现的同名文件。

概念解释及使用场景

classpath是指WEB-INF文件夹下的classes目录。

通常我们一般z在web.xml中使用这种写法,比如spring加载bean的上下文时,如下:

<!--系统自动加载文件-->
<!--这里使用的是classpath*:的形式-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:/spring-context-*.xml</param-value>
</context-param>
<!--配置spring的context监听器 -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

如上的写法,可能会认为这个就是web.xml固有的写法,其实不是,这种写法是spring的写法,与web.xml无关。可以通过spring的方法使用这种方式进行路径的读取。

classpath和classpath*区别

classpath:只会到你的class路径中查找找文件。

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

注意:用classpath*:需要遍历所有的classpath,所以加载速度是很慢的;因此,在规划的时候,应该尽可能规划好资源文件所在的路径,尽量避免使用classpath*。

classpath*的使用:

当项目中有多个classpath路径,并同时加载多个classpath路径下(此种情况多数不会遇到)的文件,*就发挥了作用,如果不加*,则表示仅仅加载第一个classpath路径。

一些使用技巧:

  • 从上面使用的场景看,可以在路径上使用通配符*进行模糊查找。比如:
<param-value>classpath:applicationContext-*.xml</param-value>
  • "**/"表示的是任意目录;"**/applicationContext-*.xml"表示任意目录下的以"applicationContext-"开头的XML文件。
  • 程序部署到tomcat后,src目录下的配置文件会和class文件一样,自动copy到应用的WEB-INF/classes目录下;classpath:与classpath*:的区别在于,前者只会从第一个classpath中加载,而后者会从所有的classpath中加载。
  • 如果要加载的资源,不在当前ClassLoader的路径里,那么用classpath:前缀是找不到的,这种情况下就需要使用classpath*:前缀。
  • 在多个classpath中存在同名资源,都需要加载时,那么用classpath:只会加载第一个,这种情况下也需要用classpath*:前缀。

 

标签:xml,文件,区别,spring,路径,classpath,加载
From: https://www.cnblogs.com/xfeiyun/p/17823335.html

相关文章

  • Electrical(Harware) Levels: 常用电平LVTTL、LVCMOS、LVDS、CML的标准和区别
    电平:电压范围,VOH(V.OutputHigh),VOL(V.O.Low),VIH(V.InH.),VIL(V.InL.)TTL:Transistor-TransistorLogic,可提供较大电流,驱动能力强;CMOS:ComplementaryMetalOxideSemiconductorPMOS+NMOS,常用在高速数字电路;常用电平LVTTL、LVCMOS、LVDS、CML的标准和......
  • toml json5 写入区别
    dump写入withopen(addr_1,'w')asf:  json5.dump(data_1,f)#write将字符串写入文件withopen(addr,'w')asf:  f.write(toml_str_with_comments)......
  • v$parameter v$system_parameter v$spparameter v$parameter2 v$system_parameter2
    v$parameter当前会话生效参数(showparameter)altersessionsetxxxxx;显示的内容会变化altersystemsetxxxxxx;显示的内容会变化v$system_parameter表示实例级别的参数信息,在没有在线修改参数的情况下showparameter与之相同,每开启一个新会话的时候,会话使用所有的参数都......
  • erp和进销存的区别
    ERP(EnterpriseResourcePlanning,企业资源规划)是一种集成的管理软件系统,通过整合不同部门和业务流程的信息,帮助企业达到高效的资源调配和管理。与之相比,进销存(进货、销售和库存管理)是一个相对狭义的概念,指的是企业进行商品进货、销售和库存管理的相关活动。一、ERP即企业资源规划......
  • CRM和小企业CRM,有什么区别?
    在CRM领域我们有两条产品线,一个是CRM,另一个是小企业CRM(Bigin)。您可以把Bigin看成Zoho CRM系统的副线,用来满足更小规模和初级发展阶段的企业,以更加全面的产品和解决方案服务市场。那么CRM和小企业CRM该选哪个?CRM和Bigin的区别Bigin是CRM的Mini版,保留了CRM最核心的功能——客户......
  • glibc和musl libc的区别
    ++和gcc是GNU编译器集合中的两个组件,g++是GNUC++编译器,gcc是GNUC语言编译器。这两个编译器都使用glibc作为标准C库,glibc是GNU操作系统的标准C库,为支持C程序提供了许多函数和服务。简单来说,glibc是C标准库的一个实现,它包括头文件、函数库和其他的应用程序。而g++和gcc则是编译器......
  • Mybatis中的${}和#{}区别
    版权声明:本文为CSDN博主「普通网友」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/web18484626332/article/details/126112943前言动态sql是mybatis的主要特性之一,在mapper中定义的参数传到xml中之后,在查询之前,m......
  • 【U盘格式NTFS,FAT32,exFAT切换方法及各种文件系统区别】
    切换U盘格式步骤:1、格式化前,先确认把U盘离的数据进行备份,插入U盘,右击鼠标->点击格式化 2、进入格式化弹窗界面,选择所要修改的文件系统->点击开始->确定 各种文件系统区别:NTFS(NewTechnologyFileSystem意为新技术文件系统,其功能全面,应用最广泛。NTFS:1、NTFS这种格式的......
  • Java中的Runnable、Callable、Future、FutureTask的区别与示例
    Java中存在Runnable、Callable、Future、FutureTask这几个与线程相关的类或者接口,在Java中也是比较重要的几个概念,我们通过下面的简单示例来了解一下它们的作用于区别。Runnable其中Runnable应该是我们最熟悉的接口,它只有一个run()函数,用于将耗时操作写在其中,该函数没有返回值。然......
  • 开发者APP应用程序混合开发和原生开发的区别
    Hello,各位同学们好,我是咕噜铁蛋!随着移动应用市场的蓬勃发展,App开发成为越来越多开发者和企业的关注焦点。在App开发过程中,我们常常听到两种开发方式:原生开发和混合开发。今天铁蛋将和大家深入探讨这两种开发方式的区别,以帮助开发者更好地选择适合自己项目需求的开发方式。一、概念......