You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot测试目录下@Value注解读取配置值为null如何解决

问题根因
  • @Value注解的属性注入能力仅对Spring IoC容器托管的Bean生效,你手动实例化的类、没有被Spring识别为组件的类,内部的@Value不会被自动赋值,默认就是null
  • 测试类如果没有加@SpringBootTest注解,不会启动Spring测试上下文,所有依赖注入、配置加载逻辑都不会执行,自然拿不到配置值
修复步骤
  1. 给A类添加Spring组件注解,将其注册为容器管理的Bean
    示例代码:
// 加上@Component注解,让Spring启动时自动扫描到这个类并实例化托管
@Component
public class A {
    @Value("${test.name}")
    private String name;
    @Value("${test.age}")
    private Integer age;

    public void print() {
        System.out.println("name:" + name + "; age:" + age);
    }
}
  1. 给作为测试启动类的B类添加@SpringBootTest注解,启动Spring测试上下文,同时用@Autowired注入A类的实例,不要手动new A()
    示例代码:
@SpringBootTest
class BTest {
    // 直接注入Spring托管的A类实例,不要自己new A()
    @Autowired
    private A a;

    @Test
    void testPrintInfo() {
        a.print();
    }
}
额外注意事项
  • 确保src/test/resources下的配置文件命名为application.properties(如果是自定义命名,需要在A类上加@PropertySource("classpath:你的配置文件名.properties")指定加载路径)
  • 配置文件中的属性key要和@Value中的占位符完全一致,避免拼写错误
  • 所有需要依赖注入、配置注入的类都不要手动实例化,统一从Spring容器中获取

内容的提问来源于stack exchange,提问作者Pioneer Even

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 17:15:02