原因和解决办法
1.原因
idea具有检测功能,接口不能直接创建bean的,需要用动态代理技术来解决。
2.解决办法
1.修改idea的配置
1.点击file,选择setting
2.搜索inspections,找到Spring
3.找到Spring子目录下的Springcore
4.在Springcore的子目录下找到code
5.把seyerity选项改成警告
2.修改代码
1,@Autowrited改为@Autowrited(required = false)
2,在@Mapper上面加上@Reoository
3,使用@MapperScan和@Reoository
3.扩展
1.@Repository 与 @Mapper区别
1.数据接口层 @Repository 与 @Mapper都是作用于数据接口层,用于数据访问
2.分属不同的框架 org.springframework.stereotype.Repositor和org.apache.ibatis.annotations.Mapper,从类的包路径就可以看出来,@Mapper是 Mybatis 的注解,和 Spring 没有关系,@Repository 是 Spring 的注解,用于声明一个 Bean。
3.动态加载方式不同 使用 Mybatis 有 XML 文件或者注解的两种使用方式,原理是一样的,Mybatis 需要找到对应的mapper,在编译的时候动态生成代理类,实现数据库查询功能,所以只要在数据接口类上加上@Mapper就能被动态加载。
然后,@Repository只是为了标识,注解本身是没有作用的,需要和@MapperScan注解配合使用
注意:@Repository不可以单独使用,否则会报错误,要想用,必须配置扫描地址(@MapperScannerConfigurer)