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

调用SqlServer时JdbcTemplate抛出NullPointerException问题求助

问题根因

空指针异常和数据库连接配置、SQL语句无关,核心原因是手动实例化业务类导致Spring依赖注入完全失效。
你在Controller层通过new Implementation()手动创建了业务实现类的对象,这个对象不归Spring容器管理,类内部标记了@Autowired的jdbcTemplate属性不会被注入,始终为null,调用jdbcTemplate.query()方法时就会触发空指针,和报错栈的行号指向完全匹配。

修复步骤
  • 第一步:给业务实现类加上Spring组件注解,让它被Spring容器托管
@Service // 增加这个注解标记为业务层Bean
public class Implementation {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public List<User> getSomething(){
        return jdbcTemplate.query("SELECT * FROM users", BeanPropertyRowMapper.newInstance(User.class));
    }
}
  • 第二步:删除Controller里手动new业务对象的代码,同样通过依赖注入获取Spring管理的业务类实例
@RestController
public class Controller {
    // 替换原来的手动new写法,用注入方式获取实例
    @Autowired
    private Implementation implementation;

    @GetMapping("/something")
    public List<User> something(){
        return implementation.getSomething();
    }
}

注意:所有需要使用Spring依赖注入能力的对象,都不能通过手动new的方式创建,手动实例化的对象脱离Spring容器管控,类内所有@Autowired、@Resource等注入标记都不会生效。

  • 补充说明:你贴的application.properties数据源配置格式正确,SpringBoot会根据配置自动创建数据源、完成JdbcTemplate的自动装配,不需要额外手动编写JdbcTemplate的配置类。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.15 16:15:59