没想到学习第一天就踩到坑,而且不知道怎么解决。。。。(已解决)
直接上坑:
工程结构:
MainTest测试代码
public class MainTest {
public static void main(String[] args) {
/*AnnotationConfigApplicationContext applicationContext =
new AnnotationConfigApplicationContext(Day01BeanConfiguration.class);*/
ClassPathXmlApplicationContext applicationContext=
new ClassPathXmlApplicationContext("com/spring/day02/day02-beans.xml");
AccountService accountService =
applicationContext.getBean("accountService",AccountService.class);
System.out.println("Befor money transfer");
System.out.println("Account 1 balance:"+accountService.getAccount(1).getBalance());
System.out.println("Account 2 balance:"+accountService.getAccount(2).getBalance());
accountService.transferMoney(1,2,0.9);
System.out.println("After money transfer");
System.out.println("Account 1 balance:"+accountService.getAccount(1).getBalance());
System.out.println("Account 2 balance:"+accountService.getAccount(2).getBalance());
}
}
bean配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="accountService" class="com.spring.day02.AccountServiceImpl">
<property name="accountDao" ref="accountDao"/>
</bean>
<bean id="accountDao" class="com.spring.day02.AccountDaoImpl"/>
</beans>
测试结果:
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [com/spring/day02/day02-beans.xml]; nested exception is java.io.FileNotFoundException: class path resource [com/spring/day02/day02-beans.xml] cannot be opened because it does not exist
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:343)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:180)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:216)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:187)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:251)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:540)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:454)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.spring.day02.MainTest.main(MainTest.java:9)
Caused by: java.io.FileNotFoundException: class path resource [com/spring/day02/day02-beans.xml] cannot be opened because it does not exist
at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:172)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:329)
... 13 more
将.xml文件放过很多位置,src下面,java下面等,也尝试使用过相对路径和绝对路径都提示这个错误。
Loading XML bean definitions from class path resource [com/spring/day02/day02-beans.xml]
但是使用
/*AnnotationConfigApplicationContext applicationContext =
new AnnotationConfigApplicationContext(Day01BeanConfiguration.class);*/
这个方法又是ok的。很懵逼。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以上问题解决:
最后发现报错一直提示:Loading XML bean definitions from class path resource。
决定将xml文件放入工程生成时就有的resources包中。路径配相对当前包路径:“/day01-beans.xml”,运行代码:
结果完美运行。