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

SpringBoot读取application.yaml配置值为null问题排查

问题原因

配置值为null和多环境profile配置、yaml语法无关,核心错误是对象创建方式不符合Spring依赖注入规则:

  • @Value属性注入仅对Spring IoC容器托管的Bean生效,容器初始化Bean时才会解析配置、完成属性赋值。
  • 代码中SpringApplication.run()执行完成后,手动通过new App()创建了全新的App类实例,该实例完全脱离Spring容器管理,Spring不会对其执行属性注入,类中两个字段自然保持默认值null。
  • Spring启动时已经扫描到@SpringBootApplication标记的App类,在容器内部生成了完成属性注入的App实例,但代码没有使用这个托管实例,反而调用了手动new出的未注入实例的方法,最终打印null。
修复方案

修改main方法逻辑,不要手动new App实例,直接从Spring运行返回的应用上下文中获取容器托管的App Bean即可:

@SpringBootApplication
public class App {

    @Value("${application.id}")
    private String applicationId;

    @Value("${my.server}")
    private String server;

    public static void main(String args[]) {
        // 获取Spring启动后的上下文对象
        ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
        // 从容器中获取已经完成属性注入的App Bean
        App app = context.getBean(App.class);
        app.display();
    }

    public void display(){
        System.out.println("Application Id : "+ applicationId);
        System.out.println("Server : "+ server);
    }
}

修改后运行即可正常读取dev环境对应的配置值,输出结果如下:

Application Id : dev-app
Server : localhost:8080

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 03:24:28