idea报“Could not autowire. No beans of ‘UserMapper‘ type found. ”错解决办法

原因和解决办法

1.原因

idea具有检测功能,接口不能直接创建bean的,需要用动态代理技术来解决。

2.解决办法

1.修改idea的配置

1.点击file,选择setting
idea报“Could not autowire. No beans of ‘UserMapper‘ type found. ”错解决办法_第1张图片
2.搜索inspections,找到Spring
idea报“Could not autowire. No beans of ‘UserMapper‘ type found. ”错解决办法_第2张图片
3.找到Spring子目录下的Springcore
idea报“Could not autowire. No beans of ‘UserMapper‘ type found. ”错解决办法_第3张图片
4.在Springcore的子目录下找到code
idea报“Could not autowire. No beans of ‘UserMapper‘ type found. ”错解决办法_第4张图片
5.把seyerity选项改成警告
idea报“Could not autowire. No beans of ‘UserMapper‘ type found. ”错解决办法_第5张图片

2.修改代码

1,@Autowrited改为@Autowrited(required = false)
idea报“Could not autowire. No beans of ‘UserMapper‘ type found. ”错解决办法_第6张图片
2,在@Mapper上面加上@Reoositoryidea报“Could not autowire. No beans of ‘UserMapper‘ type found. ”错解决办法_第7张图片
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)

你可能感兴趣的:(JavaWeb,intellij-idea,ide,Mapper,Autowired)