我认为上述观点可能有一些错误,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