關於springmvc 中的Controller使用自動裝配失敗的解決方法

今天項目中使用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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章