昨天写了一篇文章,解决idea中的无法加载application.xml的问题,无疑它能够解决这个问题,但是后续会带来诸多不便,假如我们删除了web-inf中的xml,那必然会报错。我们仍然使用当年eclipse里的方法,这似乎有点跟不上节奏,在idea中的web.xml中我们发现有这样一段代码:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
显然在此,idea已经为我们提供了解决的思路,而具体方案需要查阅文档才得知,关键就在这个类org.springframework.web.context.ContextLoaderListener
在此,我们将不再使用旧的加载方式:
// ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// employeeDao = (EmployeeDao)applicationContext.getBean("employeeDao");
而是采用这样的加载方式:
WebApplicationContext webApplicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());
employeeDao = (EmployeeDao)webApplicationContext.getBean("employeeDao");
最终运行成功!
说明:这是在自定义的Servlet中加载这个文件!