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
相关产品推荐
相关产品推荐

