SpringBoot下@Autowired注入TeacherService报错,StudentService正常
SpringBoot服务注入报错排查方案
问题场景
正在搭建SpringBoot项目,已定义两个服务接口,计划将接口实现注入到对应控制器中:
StudentService接口定义如下:
public interface StudentService { void addStudent(Student student); //other functions }
TeacherService接口定义如下:
public interface TeacherService { void addStudent(Teacher teacher); //other functions }
异常表现
- 控制器中用
@Autowired注入StudentService时程序可正常启动运行。 - 控制器中用
@Autowired注入TeacherService时始终触发启动报错,多次排查未定位诱因。
已编写的控制器代码
- 可正常运行的
StudentController类:
@Controller public class StudentController { @Autowired StudenService studenService; .... .... }
- 触发注入报错的
TeacherController类:
@Controller public class TeacherController { @Autowired TeacherService teacherService; .... .... }
常见报错诱因与排查方向
- 未为
TeacherService编写实现类:Spring容器默认不会自动注册接口实例,必须编写对应实现类,且在类上添加@Service注解,保证实现类被组件扫描到。 - 实现类未被组件扫描覆盖:检查主启动类的
@SpringBootApplication注解默认扫描范围,确保TeacherService的实现类所在包路径在启动类的同级或下级目录下,若路径不在扫描范围内,需手动通过@ComponentScan指定扫描路径。 - 实现类存在依赖注入失败:检查
TeacherService实现类的构造方法、字段上的依赖项是否都能被Spring容器正常加载,任何一个依赖缺失都会导致整个实现类无法注册为Bean,最终触发上层控制器的注入报错。 - 拼写不一致:检查注入字段的类型全限定名是否和
TeacherService接口的全路径完全匹配,不存在大小写、拼写错误(可对照参考StudentController代码中的拼写疏漏,逐字核对注入对象的类名是否完全匹配)。
内容的提问来源于stack exchange,提问作者user15005659
相关产品推荐
相关产品推荐

