Java Spring依赖注入失效:JUnit测试中Box对象为Null问题排查
Spring注入Box对象到测试类为null的常见原因
测试类未启用Spring测试上下文
若BoxTest未添加@SpringBootTest(Spring Boot项目)或@ContextConfiguration(classes = BoxConfig.class)(纯Spring项目)注解,Spring不会为测试类加载容器,自然无法完成Bean注入。纯Spring测试必须明确指定配置类,否则Spring不知道要加载哪些Bean定义。Box或BoxConfig未被Spring容器注册
- BoxConfig未加
@Configuration注解:Spring不会将其识别为配置类,里面@Bean方法定义的Box对象不会被注册到容器。 - Box类的包不在Spring扫描范围内:如果用
@Component等注解标记Box,但所在包未被@ComponentScan覆盖(Spring Boot默认扫描主类所在包及子包),Box不会被自动注册为Bean。
- BoxConfig未加
测试类的box属性未添加注入注解
必须给BoxTest中的box属性加上@Autowired、@Inject或@Resource注解,否则Spring不会自动注入该属性。手动实例化测试类
若代码中直接new BoxTest(),该对象不受Spring容器管理,内部的box属性不会被注入。必须使用Spring容器管理的测试类实例(由测试框架自动创建)。Box的Bean定义存在问题
- BoxConfig中
@Bean方法返回null,导致Spring无法获取有效Bean实例。 - 使用
@Component等注解注册Box时,Box类缺少无参构造器,Spring无法实例化该类。
- BoxConfig中
内容的提问来源于stack exchange,提问作者Cake
相关产品推荐
相关产品推荐

