启动Spring Boot应用时数据库未初始化,执行mvn test无连接日志如何排查
问题原因分析
- DB2驱动依赖缺失:当前pom.xml仅配置了Spring JDBC相关基础依赖,没有引入IBM DB2的官方JDBC驱动依赖,Spring Boot无法实例化DB2数据源连接。
- Spring JDBC版本冲突:你使用的Spring Boot版本为2.5.3,其默认适配的spring-jdbc版本为5.3.9,手动指定5.1.4.RELEASE版本会导致依赖版本不兼容,打断数据源自动配置逻辑。
- 数据源Bean未被触发初始化:Spring Boot的数据源自动配置默认会在上下文中存在DataSource依赖注入需求时才会触发初始化,若你的测试代码中没有注入
DataSource或JdbcTemplate相关Bean,也没有触发任何数据库操作,Spring不会主动实例化数据源。 - 测试类上下文配置问题:从日志可看出你使用了Karate接口测试框架,若测试类没有正确添加
@SpringBootTest注解、没有关联Spring Boot主启动类,会导致Spring Boot的自动配置类(包括数据源自动配置)未被加载生效。
解决步骤
- 移除pom.xml中手动指定版本的
spring-jdbc依赖,spring-boot-starter-jdbc已经包含了对应版本的spring-jdbc,无需额外单独引入,避免版本冲突。 - 新增DB2 JDBC驱动依赖到pom.xml,参考配置如下:
<dependency> <groupId>com.ibm.db2</groupId> <artifactId>jcc</artifactId> <version>11.5.7.0</version> <!-- 可根据你的DB2服务端版本选择对应适配的驱动版本 --> </dependency>
- 检查测试类
RunTest的注解配置,确保添加了@SpringBootTest注解,并且指定了主启动类的class,示例如下:
@SpringBootTest(classes = 你的项目主启动类.class) public class RunTest { // 测试逻辑 }
- 若需要启动时立即初始化数据源,可以在application.yml中添加配置:
spring: datasource: initialization-mode: always
内容的提问来源于stack exchange,提问作者patel
相关产品推荐
相关产品推荐

