问题:
在Service层中使用@Autowired 注解注入mapper类后报Could not autowire. No beans of 'TeaMapper' type found.错误
解决:
在mapper层(Dao层)创建实例时加上@Repository 注解
Service需要使用Spring创建的名字叫“xxxMapper(xxxDao)”的xxxMapperImpl (xxxDaoImpl)实例时,需要Spring把创建好的实例注入给Service。 Spring识别实例需要用@Repository注解将所标注的类注册成spring Bean才能被Spring识别注入。
附:
Service层中可以使用@Autowire和 @Resource装配注入; @Resources按名字,是JDK的 ,而@Autowire按类型,是Spring的。
@Repository 只能标注在 Mapper(DAO) 类上,因为该注解将类识别为Bean的同时它还能将所标注的类中抛出的数据访问异常封装为 Spring 的数据访问异常类型。 Spring本身提供了一个丰富的并且是与具体的数据访问技术无关的数据访问异常结构,用于封装不同的持久层框架抛出的异常,使得异常独立于底层的框架。