今天项目中使用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>