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

SpringBoot注入JdbcTemplate提示无对应类型Bean如何解决

问题现象

SpringBoot项目中使用构造器注入JdbcTemplate时,IDE中该参数被红色下划线标注,错误提示:

Could not autowire. No beans of 'JdbcTemplate' type found

无运行时堆栈报错,仅IDE提示。
对应Repository代码:

package projet.thesquad.repository;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import projet.thesquad.domain.Member;

@Repository
public class MemberRepository {

    private final String ADD_MEMBER_REQUEST = "INSERT INTO TheSquad.Member (fistname, lastname, job) VALUES (?, ?, ?)";

    private final JdbcTemplate jdbcTemplate;

    public MemberRepository(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }

    public int addMember(Member member) {
        return jdbcTemplate.update(ADD_MEMBER_REQUEST, member.getFirstname(), member.getLastname(), member.getJob());
    }
}

对应build.gradle依赖配置:

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework:spring-core:5.3.21'
    implementation 'org.springframework:spring-jdbc:5.3.21'
    runtimeOnly 'mysql:mysql-connector-java'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.security:spring-security-test'
}
解决方法

分两种场景处理:

  • 场景1:仅IDE标红,项目实际可正常启动运行
    这是IDE的Spring上下文索引异常导致的误报,无需修改业务代码,按以下步骤操作即可:
    1. 确认IDE已开启注解处理器
    2. 清理IDE缓存并重启:执行File -> Invalidate Caches... -> Invalidate and Restart
    3. 重新刷新Gradle依赖,等待IDE完成项目索引重建后,红线提示会自动消失
  • 场景2:IDE标红同时项目启动也抛出找不到JdbcTemplate类型bean的错误
    这是配置问题导致的自动装配失效,按以下步骤修复:
    1. 删除build.gradle中手动指定版本的spring-core、spring-jdbc依赖。spring-boot-starter-data-jdbc已经会引入和当前SpringBoot版本完全适配的spring-jdbc、spring-core依赖,手动指定固定版本很容易出现版本不兼容、自动配置类不生效的问题,直接删除这两行:
      implementation 'org.springframework:spring-core:5.3.21'
      implementation 'org.springframework:spring-jdbc:5.3.21'
      
    2. 检查项目配置文件(application.yml/application.properties)中的数据源配置是否完整。JdbcTemplate自动装配的前提是容器中存在配置正确的DataSource bean,必填配置参考(application.yml格式):
      spring:
        datasource:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://127.0.0.1:3306/你的数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
          username: 数据库账号
          password: 数据库密码
      
    3. 如果完成以上两步后仍报错,可以手动在配置类中注册JdbcTemplate的Bean:
      @Configuration
      public class JdbcConfig {
          @Bean
          public JdbcTemplate jdbcTemplate(DataSource dataSource) {
              return new JdbcTemplate(dataSource);
          }
      }
      

额外注意:你代码中的插入SQL存在拼写错误,字段名写的是fistname,和传入参数对应的firstname不一致,后续运行时会抛出字段不存在的SQL异常,记得同步修正。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:15:27