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

Spring @Component类@Value注解属性未注入问题排查

问题根因

手动通过new Scheduler()创建的实例,不属于Spring IoC容器管理的Bean。
@Component注解的作用是标记类,让Spring在包扫描阶段自动创建该类的单例实例存入容器,同时对容器管理的实例完成@Value、@Autowired这类标记的依赖注入逻辑。手动new出来的对象完全脱离Spring容器管控,容器不会感知到这个对象的存在,自然不会为其注入build.version配置值,最终读取到的buildVersion属性就是默认值null。
另外你贴的控制器代码中调用了scheduler.update(),但定义的Scheduler类里只有test()方法,属于笔误,调用时注意匹配方法名。

修复方案

不要手动实例化Scheduler类,直接通过依赖注入获取Spring容器中已经初始化完成、属性注入完毕的Scheduler Bean即可。

方式1:字段注入

@RestController
public class ApiController {

    @Autowired
    private Scheduler scheduler;

    @GetMapping("/status")
    public StatusResponse status() {
        scheduler.test();
        // 补充其余业务逻辑,比如组装返回StatusResponse对象
    }
}

方式2:构造器注入(Spring官方推荐)

单构造器场景下无需额外加@Autowired注解,Spring会自动完成注入:

@RestController
public class ApiController {

    private final Scheduler scheduler;

    public ApiController(Scheduler scheduler) {
        this.scheduler = scheduler;
    }

    @GetMapping("/status")
    public StatusResponse status() {
        scheduler.test();
        // 补充其余业务逻辑
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 21:02:00