spring 的启动 之加载文件 applicationContext.xml
来源:互联网 发布:加入域找不到网络名 编辑:程序博客网 时间:2024/04/29 20:19
我们在junit单元测试里写了一个方法,对applicationContext.xml进行手工的调用
package tc.springtest;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.support.DefaultListableBeanFactory;import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;import org.springframework.core.io.ClassPathResource;import org.springframework.stereotype.Component;import org.springframework.test.annotation.Rollback;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import org.springframework.transaction.annotation.Transactional;import org.hamcrest.SelfDescribing;import org.apache.commons.logging.LogFactory; //@Component // @Transactional // @RunWith(SpringJUnit4ClassRunner.class) // @ContextConfiguration(locations = { "classpath:config/xml/applicationContext.xml" }) public class test { @Test //@Rollback(true) public void should_return_XXX_when_given_xx(){ System.out.println(123); ClassPathResource res = new ClassPathResource("classpath:config/xml/applicationContext.xml"); DefaultListableBeanFactory factory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory); reader.loadBeanDefinitions(res); } }
可是junit总是报错 说找不到文件applicationContext.xml,令人奇怪的是 如果用
@ContextConfiguration(locations = { "classpath:config/xml/applicationContext.xml" })程序是可以找到该文件的。单步调试后发现报错的地方在XmlBeanDefinitionReader的第341行loadBeanDefinitions方法里,是在328行
InputStream inputStream = encodedResource.getResource().getInputStream();抛出的异常,在341行
catch (IOException ex) {throw new BeanDefinitionStoreException("IOException parsing XML document from " + encodedResource.getResource(), ex);}被捕捉到的。
把
@ContextConfiguration(locations = { "classpath:config/xml/applicationContext.xml" })打开后进行对比发现loadBeanDefinitions里的参数encodedResource为class path resource [config/xml/applicationContext.xml]
而是用代码进行加载配置文件的时候 encodedResource为class path resource [classpath:config/xml/applicationContext.xml]
两相比较发现多了classpath值。
也就是说 ClassPathResource res = new ClassPathResource 是默认在classpath下进行搜索的。
下一篇我要接着分析一下
ClassPathResource res = new ClassPathResource("config/xml/applicationContext.xml");的代码过程,以后还要对
@ContextConfiguration(locations = { "classpath:config/xml/applicationContext.xml" })进行下代码跟踪,看一下两个的具体区别。
- spring 的启动 之加载文件 applicationContext.xml
- Spring中加载ApplicationContext.xml文件的方式
- Spring中加载ApplicationContext.xml文件的方式
- Spring中加载ApplicationContext.xml文件的方式【转】
- Spring中加载ApplicationContext.xml文件的方式
- Spring中加载ApplicationContext.xml文件的方式
- Spring中加载ApplicationContext.xml文件的方式
- Spring中加载ApplicationContext.xml文件的方式
- Spring中加载ApplicationContext.xml文件的方式
- Spring中加载ApplicationContext.xml文件的方式
- 加载spring时applicationContext.xml文件出错
- 加载spring时applicationContext.xml文件出错
- Spring的applicationContext.xml文件
- Spring的applicationContext.xml文件
- Spring的applicationContext.xml文件
- Spring的applicationContext.xml文件
- spring的applicationContext.xml如何自动加载
- Spring 加载xml配置文件的方式 ApplicationContext
- CEF一探
- loadrunner system() teseract-ORC 识别验证码
- getWindow().setFlags
- bzImage构成--pre-kexec linux2.6.27
- WinForm 文件夹和文件选择对话框
- spring 的启动 之加载文件 applicationContext.xml
- Java Swing 刷新JLabel的背景图片
- hibernate二级缓存配置
- 命令行是你的至交好友
- 基于 Android NDK 的学习之旅----- Java 方法映射到C中的签名
- setRequestedOrientation
- oracle11g 配置Enterprise manager
- 危急值
- android中XML属性总结(更新中)