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

SpringBoot注入NamedParameterJdbcTemplate为空抛空指针异常如何解决

问题排查与解决方案

SpringBoot 默认会在引入JDBC起步依赖、完成数据源配置后自动创建并注入NamedParameterJdbcTemplate实例,出现template为null的空指针异常,可按照以下优先级逐一排查:

  • 优先排查是否手动实例化了@Repository类:如果在业务代码中通过new关键字创建该Repository类的对象,Spring不会管理手动创建的实例,也就不会完成属性的自动注入,template自然为null。解决方法:删除手动new的逻辑,通过@Autowired/@Resource注入该Repository实例后再调用方法。
  • 检查Repository类是否被Spring正确扫描识别:
    1. 确认类上已经添加了@Repository注解,没有拼写错误
    2. 确认该类所在包在Spring的组件扫描路径下:如果类放在启动类所在包的外层,需要在启动类上添加@ComponentScan(basePackages = "你的Repository所在包路径")指定扫描范围
  • 检查依赖是否完整:确认项目中已经引入了spring-boot-starter-jdbc起步依赖,以及对应数据库的驱动依赖(比如MySQL的mysql-connector-java),缺少JDBC起步依赖时Spring不会自动创建NamedParameterJdbcTemplate的默认实例。Maven依赖示例如下:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>
  • 检查注入变量的写法是否符合规范:
    1. 不要给NamedParameterJdbcTemplate类型的成员变量添加static修饰,Spring不会为静态变量执行注入
    2. 确认@Autowired注解的包路径为org.springframework.beans.factory.annotation.Autowired,没有引入其他同名注解
  • 排查是否存在自定义配置覆盖了默认实例:如果你手动编写了Jdbc相关的自定义配置类,注释自定义配置后重试注入,排查自定义配置是否存在逻辑错误导致模板实例未正确创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:06:04