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

Spring Boot无法识别JDBC仓库,应用启动后自动停止求助

Spring Boot集成MySQL JDBC启动异常问题排查

问题现象

  • 启动应用时日志显示扫描到0个JDBC仓库接口
  • 数据源连接成功,但应用启动后随即停止
  • 此前曾提示缺少数据库URL,已在配置文件中补充相关配置

已补充的配置文件内容

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=...
spring.datasource.username=...
spring.datasource.password=...
server-port=8081

(上述...为个人配置信息)

pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.1</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>laustrup</groupId>
<artifactId>BandwichPersistenceDebugging</artifactId>
<version>0.0.1</version>
<name>BandwichPersistenceDebugging</name>
<description>BandwichPersistenceDebugging</description>
<properties>
    <java.version>18</java.version>
</properties>
<dependencies>
    <!-- Standard spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>

    <!-- Database persistence -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.mariadb.jdbc</groupId>
        <artifactId>mariadb-java-client</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- Additional -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    <!-- Testing -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

</project>

项目结构

项目包结构如下(红色表示未加入Git):
项目包结构

解决建议

  • 修正仓库接口扫描范围:检查启动类的@SpringBootApplication注解,若仓库接口所在包不在启动类的同级或子包下,添加@EnableJdbcRepositories(basePackages = "你的仓库包路径")指定扫描范围。
  • 清理冗余依赖:spring-boot-starter-data-jdbc已包含spring-boot-starter-jdbc的核心功能,移除后者避免依赖冲突。
  • 确保应用持续运行:若为Web应用,将spring-web替换为spring-boot-starter-web,保证Tomcat容器正常启动;若非Web应用,添加spring-boot-starter基础依赖,或实现CommandLineRunner接口保持进程运行。
  • 适配MySQL驱动版本:Spring Boot 3.x需使用Jakarta EE规范的驱动,将mysql-connector-java替换为mysql:mysql-connector-j,并确保版本与Spring Boot 3.0.1兼容。
  • 检查仓库接口规范:确保JDBC仓库接口正确继承CrudRepository/JdbcRepository,可手动添加@Repository注解确保被Spring容器识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 05:45:34