首页 > 图灵资讯 > 技术篇>正文

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

2023-06-15 09:29:27

指定classpathh可以Spring*:claspath:从classpath加载前缀加路径的文件,例如,bean的定义文件.classpath*:它的出现是从多个jar文件中加载相同的文件.classpath:只能加载找到的第一份文件. 比如 resource1.package在jar中的package 'com.test.rs' 有一个 'jarAppcontext.xml' 文件,内容如下: <bean name="ProcessorImplA" class="com.test.spring.di.ProcessorImplA" /> resource2.package在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中运行的状态) ----------------------------理解----------------- classpath 是指加载的资源文件 Properties props = PropertiesUtils.load("classpath:top.application.properties"); path = props.getProperty("ats.tasks.temp.file"); -------------------- start "crm-batch" java -Xms64m -Xmx512m -Dfile.encoding=GBK -cp ".;" -Dmain.class=com.hupun.crmbatch.XxxService -Dlib.paths="../lib;../config;" -jar launch.jar %* app程序 -Dlib.paths="../lib;../config;" 加载的资源文件 PropertiesUtils.load("classpath:com/hupun/crmbatch/service/top.application.properties"); 找到:com.hupun.crmbatch.service 包下的资源文件. web应用程序直接将配置文件放在/WEB-INF/classes 下面

上一篇 通用Propterties工具类,兼容读jar同级目录的文件。
下一篇 简单易学的机器学习算法——支持向量机(开篇:基本概念)

文章素材均来源于网络,如有侵权,请联系管理员删除。