前言
最近在配置项目,由于第一次用SSM整合,难免遇到各种各样的问题,特此记录,以示警戒
问题一: Spring bean注入失败 No qualifying bean of type
异常情况
大概讲的就是没有找到合适的bean,spring注入失败
原因:
(本人情况):
由于这个bean是个Mapper接口用来和数据库交互,且需要Mybatis实现注入spring容器才能使用,分析下原因应该是mybatis没有扫描到这个bean虽然application.xml已经配好了Mybatis可是还是没有用 ((´-_-)-_-)-_-)
<!--定位bean -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="typeAliasesPackage" value="com.rightstar.bean" />
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:com/rightstar/bean/**/*.xml"/>
</bean>
<!--mybatis定位beanMapper配置 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.righstar.bean.mapper"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
解决办法:
- 使用@MapperScan进行mybatis的依赖注入
@Service("BooksService")
/*业务层导入mybatis的mapper接口映射
*重要 由于@Mapper映射莫名消失
*/
@MapperScan("com.rightstar.bean")
public class BooksServiceImpl implements BooksService {
@Autowired
BooksMapper BM;
public List<Books> list(){
List<Books> l =new ArrayList<Books>();
System.out.println("业务层查询...");
for(Books book:BM.pageList(10))
System.out.println(book.getName());
return BM.pageList(10);
};
public List<Books> list(int offset,int pagesize){
List<Books> l =new ArrayList<Books>();
return l;
};
}