问题描述
`提示:Springboot测试类中,出现依赖注入为空的情况。
例如:
原因分析:
- 测试类跟启动类Main的包不一致
- 测试类需要@@RunWith(SpringRunner.class)才能使用要依赖注入的实例
@Autowired注入的类,有了@RunWith(SpringRunner.class)才能实例化到spring容器中,自动注入才能生效。否则报NullPointException
解决方案:
添加@RunWith(SpringRunner.class)
扩展
springboot @Autowired依赖注入失败原因可能是
- 查看basePackages的包名,看@Autowired注入的依赖,以及注入的类是否在该包名下。spring只会扫描basePackages在的包。默认不写的话为包名为springboot启动类Applications所在包
- 检查@Autowired和它注入的类的注解是否包含***@Component,@Service,@Repository,@Controller***注解如果不包含则这些类就不会被纳入spring容器。
- 检查要使用@Autowired注入的实例的方法是否为private
@Autowired
IUserService userService;
@PostMapping("rigister")
private User add(@RequestBody UserAddDTO userAddDTO) {
return userService.save(userAddDTO);
}
如果为private的话在生成动态代理的话@Autowired注入的依赖将为空。