如果你的applicationContext.xml檔案是放在WEB-INF下:
使用ClassPathXmlApplicationContext類!
ApplicationContext context = new ClassPathXmlApplicationContext("/WEB-INF/applicationContext.xml");
而ClassPathXmlApplicationContext這個類他最終會在WEB-INF/classes/目錄下尋找,你項目最終部署後src下的東西都會部署在WEB-INF/classes/目錄下,所以木找到!
使用ClassPathXmlApplicationContext這樣讀取:則出現以下異常,找不到指定檔案神馬的!
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [E:\mycodes\shop2\WEB-INF\applicationContext.xml]; nested exception is java.io.FileNotFoundException: WEB-INF\applicationContext.xml (系統找不到指定的路徑。)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:349)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:212)at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:113)at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:80)at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:123)at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:422)at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140)at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:84)at gzqh.wh.test.TestProduct.main(TestProduct.java:18)Caused by: java.io.FileNotFoundException: WEB-INF\applicationContext.xml (系統找不到指定的路徑。)at java.io.FileInputStream.open(Native Method)at java.io.FileInputStream.<init>(FileInputStream.java:106)at org.springframework.core.io.FileSystemResource.getInputStream(FileSystemResource.java:108)at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)... 13 more
沒辦法,就是讀不到,你寫絕得路徑都沒用!
好吧,讀取檔案所在的絕對路徑吧,使用FileSystemXmlApplicationContext類!
ApplicationContext context=new FileSystemXmlApplicationContext("E:\\mycodes\\shop2\\WebRoot\\WEB-INF\\applicationContext.xml");
-----------------------------------------------------------------------------------------------------
public static void main(String[] args) { ApplicationContext context=new FileSystemXmlApplicationContext("E:\\mycodes\\shop2\\WebRoot\\WEB-INF\\applicationContext.xml"); ProductDAO dao =(ProductDAO) context.getBean("ProductDAO"); List<Product> list =dao.findAll();for (Product product : list) {System.out.println(product);System.out.println(product.getCode()); }}