Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.xuanwu.msggate.mtoserver.gzjj.mapper.PoolMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1717)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1273)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227)
原因分析:spring中没有找到PoolMapper接口相关的bean对象。实际上Mybatis可以自动生成接口对象
排查解决:检查Mybatis相关配置
Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注入到Spring。
可以使用一个 MapperScannerConfigurer , 它将会查找类路径下的映射器并自动将它们创建成 MapperFactoryBean。
mybatis-spring提供了 MapperScannerConfigurer 这个类,它将会查找类路径下的映射器并自动将它们创建成 MapperFactoryBean。
MapperScannerConfigurer 是 spring和mybatis 整合的 mybatis-spring 的jar包中提供的一个类。
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--注入sqlSessionFactory-->
<property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
<!--要扫描的包-->
<property name="basePackage" value="com.xuanwu.msggate.mtoserver.gzjj.mapper"/>
</bean>
这段配置会扫描 org.mybatis.spring.sample.mapper 下的所有接口,然后创建各自接口的动态代理类。这样,Service就可以注入dao的实例了。