我相信您需要指定一个绝对路径,而不是Web应用程序的相对路径FileSystemResource
。
尝试ServletContextResource
改为使用。
Resource
ServletContext
资源的实现 ,解释Web应用程序根目录内的相对路径。
唯一的问题是您需ServletContext
要这样做:
ServletContext servletContext = ...
Resource res = new ServletContextResource(servletContext,
"/WEB-INF/businesscaliber-servlet.xml");
beanfactory factory = new Xmlbeanfactory(res);
if (factory != null && beanId != null) {
obj = factory.getBean(beanId);
}
值得注意的是,理想情况下,您将从中检索到此内容ApplicationContext
。从4.4资源加载了的春天参考:
Resource template = ctx.getResource("some/resource/path/myTemplate.txt);
将返回的是 ClassPathResource
; 如果针对FileSystemXmlApplicationContext
实例执行了相同的方法,则将 返回 FileSystemResource
。对于WebApplicationContext
,您将获得ServletContextResource
,依此类推。
这样,您可以以适合特定应用程序上下文的方式加载资源。
因此,这是检索资源的首选方法。
或者,因为从/WEB- INF/
技术上讲,它在类路径中,所以您可以使用classpath:
前缀(根据您的评论)或使用ClassPathXmlApplicationContext
(将自动返回类路径资源)。
另外,也不需要加双斜杠。不知道为什么要这样做。也许有必要用双反斜杠保持住?