出于某种原因(shiro过滤器)我将我的应用程序上下文文件保存在WEB-INF文件夹中。当我运行tomcat但是,当我尝试使用以下命令从控制器获取应用程序上下文时,一切正常:
context = new ClassPathXmlApplicationContext(fileContext);
我总是收到这个例外:
IOException parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist
似乎在ecplise下我无法在classpath下包含WEB-INF。我在stackoverflow中看了很多问题,但我还没有找到解决方案。
如果我将applicationContext.xml文件移到src / main / java文件夹下,我就可以获取上下文但是,定义到web.xml文件中的shiro filder无法看到在applicationContext文件下定义的shiro bean (我仔细检查了豆子是否正确工作)。如何告诉web.xml从src / main / java获取内容?或者,我如何到达applicationContext.xml
答案 0 :(得分:2)
WEB-INF不在您的CLASSPATH中。 WEB-INF / classes是。那么为什么不把它放在源文件夹中并打包应用程序呢?
答案 1 :(得分:2)
使用
context = new FileSystemXmlApplicationContext(fileContext);
而不是
context = new ClassPathXmlApplicationContext(fileContext);
答案 2 :(得分:1)
不要在控制器中创建ApplicationContext
的实例。春天DispatcherServlet
已经为你创造了一个。您需要做的就是使用@Autowired
访问应用程序上下文文件中的所有bean声明。
答案 3 :(得分:0)
问题已解决,在WEB-INF / classes下移动所有配置文件并添加前缀classpath:
<import resource="classpath:spring-data.xml"/>
感谢大家的帮助!我真的很感激!
欢呼,安德莉亚