SSM框架练手,mapper层@Autowire创建bean怎么也不成功,报错:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userServiceImp': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.wanzi.mapper.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
搞了一天,终于发现有两处错误:
web.xml文件中缺少一段代码
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
这一段代码的功能是注册Spring框架,启动spring容器,我的理解是spring容器没有启动成功,所以注解@Autowire出错了
还有就是,在applicationContext_service.xml文件中 ,该段代码
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataResources"></property> </bean>
其中ref="dataResources" 写成了value="dataResources",一不小心就错了
改了这两处之后,错误消失了