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

Spring Boot配置多数据源时integrationJdbcTemplate为null问题求解

问题产生原因

Spring的@Autowired注解仅支持对Spring容器管理的Bean的实例成员变量进行依赖注入,你代码里的integrationTemplate被static修饰,属于类级别的静态变量,类加载阶段就会完成初始化,此时Spring上下文还未完成初始化,也无法对静态变量完成注入,因此运行时取值为null。
而mainJdbcTemplate没有加static修饰,属于实例成员变量,因此可以被正常注入使用。

修复方案

方案1(最优,适配当前代码场景)

直接移除integrationTemplate的static修饰符即可:

@Autowired
@Qualifier("integrationJdbcTemplate")
private JdbcTemplate integrationTemplate;

因为SampleClass本身被@Component注解标注,属于Spring管理的Bean,实例化时会自动完成该成员变量的注入,且你的getDBData本身就是实例方法,完全不需要依赖静态变量访问该对象。

方案2(如果业务必须保留静态变量)

通过setter方法注入的方式给静态变量赋值:

private static JdbcTemplate integrationTemplate;

@Autowired
@Qualifier("integrationJdbcTemplate")
public void setIntegrationTemplate(JdbcTemplate template) {
    SampleClass.integrationTemplate = template;
}

Spring会在Bean实例化阶段调用该setter方法,把容器中对应的JdbcTemplate实例赋值给静态变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:15:02