SpringBoot中@Autowired爆红解决

SpringBoot中@Autowired爆红解决

问题背景

在controller层中使用 @Autowired注入dao(mapper)的时候,接口爆红

@Autowired
private EmployeeDao employeeDao;

image-20220823201257695


问题分析

爆红提示:Could not autowire. No beans of 'EmployeeDao' type found.

解释:不能自动注入,无法找到EmployeeDao类型的bean

@Autowired是Spring的注解,找不到对应的bean对象,是因为没有把该EmployeeDao注入到Spring容器中。


问题解决

解决方法1

在需要使用@Autowired注入的类上添加@Repository注解即可,这个注解是Spring的注解,作用是把当前类注册到Srping容器中实例化为一个bean,这样的话@Autowired就可以找到这个bean了

image-20220823201931660

爆红就会消失

image-20220823202022285

解决方法2

将@Autowired注解替换成@Resource注解,该注解是JDK内部的注解,不会向@Autowired那样去Spring容器中寻找bean。

image-20220823202350573

接口中并没有添加任何注解,爆红也会消失

image-20220823202420027


总结

  • 如果@Autowired导入的资源爆红需要在该资源的类方法上添加@Repository注解,否则需要使用@Resource注解

扩展

@Mapper注解:这是Mybatis中的注解,标注此类是一个Mapper,可以在每一个Mapper接口了上使用此注解

或者也在启动类上使用@MapperScan注解直接扫描整个或多个包,效果相同,二者选其一即可。


END

posted @ 2022-08-23 20:28  lyluoye  阅读(2417)  评论(0)    收藏  举报