我認爲上述觀點可能有一些錯誤,FileSystemXmlApplicationContext
無法訪問您的整個文件系統,它只能掃描是整個項目folder.In爲了證明我的結論我做一個例子,第一使用ClasspathXmlApplicationContext
和一切正常,第二次我將beans.xml文件移動到我的桌面文件夾,所以項目hirachy中沒有beans.xml文件,並將ClassPathXmlApplicationContext更改爲FileSytemXmlApplicationContext
並出現問題,錯誤跟蹤如下:
INFO: Loading XML bean definitions from file [/Users/crabime/Development/IdeaProjects/springInterview/Users/crabime/Desktop/beans.xml]
Exception in thread "main" org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [/Users/crabime/Development/IdeaProjects/springInterview/Users/crabime/Desktop/beans.xml]; nested exception is java.io.FileNotFoundException: Users/crabime/Desktop/beans.xml (No such file or directory)
因此F ileSystemXmlApplicationContext只能檢測當前項目的所有文件夾。比如你做一個該項目的根目錄下創建名爲config
目錄,你可以改變你的主類代碼象下面這樣:
ApplicationContext atx = new FileSystemXmlApplicationContext("/config/beans.xml");
,一切都會好的一次。所以如果所有人都喜歡sinuhepop說我認爲應該有些事情需要改變。
您已經描述了他們如何在使用不同。在內部它們具有不同的行爲,例如XmlWebApplicationContent,默認情況下會在WEB-INF文件夾中查找applicationContext.xml。並且它還需要init參數來配置不同的位置。基本上他們將使用不同的方法來加載XML文件。 – Seshagiri