今天項目中使用SpringMVC 和Spring框架,在編寫Controller控制器的時候出現@Autowired自動裝配的對象不能夠自動裝配
問題:org.springframework.beans.factory.BeanCreationException:
@Controller
public class MajorController {
@Autowired//問題出在這裏
private ManagerDao managerDao;
//處理登錄
@RequestMapping(value="/login.do")
public ModelAndView login(Manager manager){
ModelAndView mav = new ModelAndView("index");
if(managerDao.queryIfExist(manager))
return mav;
else
return null;
}
}
網上很多人說什麼@Service要加在接口上,純瞎比比。盡然很多人都出現springmvc Controller無法裝配的問題,那肯定不是這個問題。
我仔細想想爲什麼無法裝配,我就覺得Springmvc有自己的配置文件,既然在他下面的控制器中使用Spring中的Bean。那麼問題的關鍵就是我們在spring配置路徑的時候沒有將Springmvc的配置文件包含進來呢?
因爲我spring的路徑默認的沒有進行配置,所以我沒有將包含SpringMVC的配置文件包含進來出現了無法裝配的問題。
最後,解決方案:
在web.xml文件中加上
<!-- 爲Spring配置文件位置 默認位置可以省略 -->
<!-- 使用 Listener 加載 Spring 配置文件 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/applicationContext.xml
/WEB-INF/springmvc-servlet.xml <!--將Springmvc配置文件包含到spring位置下-->
</param-value>