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

Spring JDBC基础应用问题:JdbcTemplate Bean未找到

解决Spring JDBC中JdbcTemplate Bean找不到的问题

老哥,看你这情况,核心问题就是Spring容器里压根没生成JdbcTemplate的Bean实例,所以@Autowired自然拿不到东西——你把配置JdbcTemplate的@Bean代码注释掉了,这可不就出问题了嘛!咱们一步步把它搞定:

1. 先确认依赖是否齐全

不管你用Maven还是Gradle,得把Spring JDBC、数据库驱动和数据源的依赖都加上。以Maven为例,在pom.xml里加这些:

<!-- Spring JDBC核心依赖 -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>你的Spring版本号,比如5.3.27</version>
</dependency>
<!-- MySQL驱动(根据你用的数据库换) -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
    <scope>runtime</scope>
</dependency>
<!-- 数据源用HikariCP(Spring默认推荐) -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>5.0.1</version>
</dependency>

2. 必须显式配置DataSource和JdbcTemplate的Bean

Spring不会自动帮你创建JdbcTemplate,除非你用Spring Boot的自动配置(后面说)。所以得在你的Application类上加上@Configuration注解(把它变成配置类),然后把之前注释掉的@Bean代码恢复:

@Configuration
@ComponentScan(basePackages = "com.yourpackage") // 替换成你的项目根包路径,扫描组件
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    // 读取配置文件里的数据源参数
    @Value("${spring.datasource.url}")
    private String dbUrl;
    @Value("${spring.datasource.username}")
    private String dbUsername;
    @Value("${spring.datasource.password}")
    private String dbPassword;
    @Value("${spring.datasource.driver-class-name}")
    private String dbDriver;

    // 配置数据源Bean
    @Bean
    public DataSource dataSource() {
        HikariDataSource hikariDataSource = new HikariDataSource();
        hikariDataSource.setJdbcUrl(dbUrl);
        hikariDataSource.setUsername(dbUsername);
        hikariDataSource.setPassword(dbPassword);
        hikariDataSource.setDriverClassName(dbDriver);
        return hikariDataSource;
    }

    // 配置JdbcTemplate Bean,依赖上面的数据源
    @Bean
    public JdbcTemplate jdbcTemplate(DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    // 你的原有代码
    @Value("${spring.name}") 
    private String name;
    @Autowired 
    private JdbcTemplate jdbcTemplate;
    private static final Logger log = LoggerFactory.getLogger(Application.class);
}

敲黑板:JdbcTemplate必须依赖DataSource才能创建,所以先配DataSource的Bean,再把它注入到JdbcTemplate的Bean里。

3. 检查配置文件是否正确

在application.properties(或application.yml)里补全数据源配置:

# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/你的数据库名?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=你的数据库密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 你的自定义配置
spring.name=MySpringJDBCApp

4. 如果你用的是Spring Boot,有更简单的办法

要是你是Spring Boot项目,只要引入spring-boot-starter-jdbc依赖,上面的DataSource和JdbcTemplate的Bean会自动创建,你根本不用手动写@Bean:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

然后只要配置好application.properties里的数据源参数,直接@Autowired JdbcTemplate就行,省心!

总结一下:你之前把配置JdbcTemplate的@Bean注释掉了,导致Spring容器里没有这个Bean,所以注入失败。把上面的步骤走完,问题就解决啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:29:32