【转载】Spring加载resource时classpath*:与classpath:的区别

免责声明:
    本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除。
    原文作者:kyfxbl
    原文地址: spring配置中classpath和classpath*的区别

 

在spring配置文件里,可以用classpath:前缀,来从classpath中加载资源 

比如在src下有一个jdbc.properties的文件,可以用如下方法加载:

<bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:jdbc.properties</value>
            </list>
        </property>
    </bean>

对于打包在jar包中的资源,也可以用同样的方式:

<import resource="classpath:META-INF/cxf/cxf.xml" />

另外一种很像的方式,是使用classpath*:前缀,比如

<property name="mappingLocations">
            <list>
                <value>classpath*:/hibernate/*.hbm.xml</value>
            </list>
        </property>

 

classpath:与classpath*:的区别在于,前者只会从第一个classpath中加载,而后者会从所有的classpath中加载。

在多个classpath中存在同名资源,都需要加载,那么用classpath:只会加载第一个,这种情况下也需要用classpath*:前缀可以加载所有的资源。

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

【转载】Spring加载resource时classpath*:与classpath:的区别

时间: 2024-10-11 09:47:25

【转载】Spring加载resource时classpath*:与classpath:的区别的相关文章

Spring加载resource时classpath*:与classpath:的区别

http://blog.csdn.net/kkdelta/article/details/5507799   classpath: 第一个匹配的 classpath*:多个组件中的可匹配的

(Spring加载xml时)org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element &#39;beans&#39;.

ApplicationContext ctx = new ClassPathXmlApplicationContext("test.xml");报错 在启动Spring时,报以下错误,如图: 原因是在xml中spring的xsd的版本配置的不一致,我使用的是spring-2.5.6,但配置文件中配的是3.0.改成如下即可: [xhtml] view plain copy <?xml version="1.0" encoding="UTF-8"

spring加载jar包中的多个配置文件[转载]

在使用spring加载jar包中的配置文件时,不支持通配符,需要一个一个引入,如下所示: Java代码 <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath*:beanconfigs/applicationContext_1.xml, classpath*:beanconfigs/applicationContext_2.xml, ...

linux 加载模块时出现cannot insert &#39;*.ko&#39;: Device or resource busy错误

看 linux 设备驱动开发详解时,字符设备驱动一章,注册globalmem驱动时,出现如下错误: # insmod globalmem.ko insmod: can't insert 'globalmem.ko': Device or resource busy 原因: 模块使用的是静态分配设备号的方式,而这个设备号已经被系统中的其他设备所占用.查看未被占用的 设备号的方法: # cat /proc/devices linux 加载模块时出现cannot insert '*.ko': Devi

spring加载jar包中多个配置文件(转)

转自:http://evan0625.iteye.com/blog/1598366 在使用spring加载jar包中的配置文件时,不支持通配符,需要一个一个引入,如下所示: Java代码 <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath*:beanconfigs/applicationContext_1.xml, classpath*:

spring加载bean的步骤

转载:https://www.cnblogs.com/hljmly/articles/5442778.html spring加载bean的方法 用spring的时候,需要一个applicationContext.xml文件,放到工程目录src下,每次我想获得这个xml文件里的bean的时候,就要这样写: BeanFactory beanFactory = new ClassPathXmlApplicationContext("applicationContext.xml"); 因为是放

Spring加载XML机制

转载自跳刀的兔子   http://www.cnblogs.com/shipengzhi/articles/3029872.html 加载文件顺序 情形一:使用classpath加载且不含通配符 这是最简单的情形,Spring默认会使用当前线程的ClassLoader的getResource方法获取资源的URL,如果无法获得当前线程的ClassLoader,Spring将使用加载类org.springframework.util.ClassUtils的ClassLoader. 1.当工程目录结构

J2EE加载资源文件以及Spring加载XML文件

J2EE加载XML文件 Resource接口,是用来加载文件的接口. FileSystemResource和ClassPathResource都是实现了Resource接口,他们都可以用来加载XML文件. 具体代码如下: 1 Resource resource1 = new ClassPathResource("文件.xml"); 2 3 Resource resource2 = new FileSystemResource("盘符:/项目路径/src/文件.xml"

is not mapped问题,Spring加载jar中配置文件

错误如下: org.hibernate.hql.ast.QuerySyntaxException: Content is not mapped [select new Content (t.id,t.name,t.values,t.systemType,t.type,t.sortnumber) from Content t where 1=1 and t.type = ? and t.systemType = ? order by t.sortnumber desc ] at org.hiber