今天在配置springMVC项目框架,启动tomcat,然后我的一个对象注入失败,找不到bean,如下:
Error creating bean with name 'userController': Injection of resource dependenci.......
解决办法如下:
这种问题我遇到2次:
1、提示我搭建项目使用的是原生dao层,结果是SQL文件里面namespace的地址错误
修改地址之后就可以了。
2、这种就比较难找了,具体不说了,直接上方案:
原来是我的web.xml文件少写了这个监听器
加上去就可以了。
org.springframework.web.context.ContextLoaderListener的作用:
ContextLoaderListener这个监听器继承自ContextLoader并且实现了ServletContextListener,他的主要作用是去寻找并读取spring主配置文件ApplicationContext.xml(也就是context-param中所定义的contextConfigLocation),然后启动WebApplicationContext,也可叫做web应用上下文,并且最重要的是,它将WebApplicationContext注入到servletContext容器中(作为servletContext的一个attribute,属性),并且在WebApplicationContext中保留了一个servletContext的引用。
所以我们可以通过WebApplicationContext得到servletContext,也可以通过servletContext获取到WebApplicationContext。
通过WebApplicationContext得到servletContext:
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
ServletContext servletContext = webApplicationContext.getServletContext();
通过servletContext获取WebApplicationContext:
ServletContext servletContext = event.getServletContext();
ApplicationContext application = WebApplicationContextUtils .getWebApplicationContext(servletContext);
后记:项目配置很多坑,不小心掉进去很难找到问题。所以以后写配置一定要仔细。。