Spring可以通过指定classpath*:与classpath:前缀加路径的方式从classpath加载文件,如bean的定义文件.classpath*:的出现是为了从多个jar文件中加载相同的文件.classpath:只能加载找到的第一个文件.
比如 resource1.jar中的package 'com.test.rs' 有一个 'jarAppcontext.xml' 文件,内容如下:
<bean name="ProcessorImplA" class="com.test.spring.di.ProcessorImplA" />
resource2.jar中的package 'com.test.rs' 也有一个 'jarAppcontext.xml' 文件,内容如下:
<bean id="ProcessorImplB" class="com.test.spring.di.ProcessorImplB" />
通过使用下面的代码则可以将两个jar包中的文件都加载进来
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"classpath*:com/test/rs/jarAppcontext.xml");
而如果写成下面的代码,就只能找到其中的一个xml文件(顺序取决于jar包的加载顺序)
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"classpath:com/test/rs/jarAppcontext.xml");
classpath*:的使用是为了多个component(最终发布成不同的jar包)并行开发,各自的bean定义文件按照一定的规则:package+filename,而使用这些component的调用者可以把这些文件都加载进来.
classpath*:的加载使用了classloader的 getResources()
方法,如果是在不同的J2EE服务器上运行,由于应用服务器提供自己的classloader实现,它们在处理jar文件时的行为也许会有所不同。 要测试 classpath*:
是否有效,可以用classloader从classpath中的jar文件里加载文件来进行测试:
getClass().getClassLoader().getResources("<someFileInsideTheJar>")
。(上面的例子是在sun的jre中运行的状态)
分享到:
相关推荐
主要介绍了Spring配置中的"classpath:"与"classpath*:"的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
在类上标注@ContextConfiguration(locations="classpath:applicationContext.xml")意思是去classpath路径下加载applicationContext.xml @Resource(name="userService")意思是把userService注入进来 最终输出结果为:...
Resource[] resources = resolver.getResources("classpath*:asm-*.txt"); Assert.assertTrue(resources.length == 0); //将通过ClassLoader.getResources("asm-license.txt")加载 //asm-license.txt存在于...
本文档介绍了spring中的在classpath中加载配置文件
问题记录 记录项目中的一个问题,不知什么时候,运行项目会出现这个错误: 解决方法 buildscript { repositories { ... classpath 'com.android.tools.build:gradle:3.6.2' } } 反思 项目出现问题
Java 实例 - classpath使用实例-classpath使用教程-手把手教程.zip
/u01/oracle/bin/netca: line 178: 11819 Aborted $JRE $JRE_OPTIONS -classpath $CLASSPATH oracle.net.ca.NetCA $* 错误 引发原因:host [oracle@jc11g ~]$ vi /etc/sysconfig/network NETWORKING=yes #修改...
用于处理PDF,或将PDF转换为jpg图片格式时用到的dll
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
一套完整的 google drive... dir /b/s src\*.java > src.list javac -sourcepath src -d bin -classpath "lib/*;" @src.list copy client_secrets.json bin\ java -classpath "bin;lib/*;" com.google.oauth2.Oauth2
3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................
spring.thymeleaf.prefix=classpath:/templates/ #spring.thymeleaf.suffix=.jsp spring.thymeleaf.cache=false #mybatis 配置 mybatis.mapper-locations=classpath:mapping/*Mapper.xml mybatis.type-...
dir /b/s src\*.java > src.list javac -sourcepath src -d bin -classpath "lib/*;" @src.list copy app.info bin\ java -classpath "bin;lib/*;" com.dropbox.oauth2.Oauth2 此示例程序所用dropbox java ...
springmvc的资源配置:Spring 刷新Introspector防止内存泄露,Spring MVC配置;Character Encoding filter; <param-name>... <param-value>classpath*:applicationContext-*.xml </context-param>
-- 设置Spring容器加载配置文件路径 --> <param-name>contextConfigLocation <param-value>classpath*:applicationContext-server.xml <listener-class>org.springframework.web.util....
关于java的classpath补充,详细说明如何配置classpath,如火热让javac正确编译运行java文件
.classpath
NULL 博文链接:https://huangminwen.iteye.com/blog/1486843
NULL 博文链接:https://hahalzb.iteye.com/blog/690802
<param-value>classpath*:applicationContext-*.xml <!-- 这是spring 监听 --> <listener-class>org.springframework.web.context.ContextLoaderListener <!-- 利用spring监听 编码设置 --> ...