原因和解决办法

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)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐