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

Spring Boot 3:禁用JPA保留JDBC,多数据源配置遇启动异常

彻底禁用Spring Boot JPA自动配置的可行方案

一、全量排除JPA相关自动配置类

只排除HibernateJpaAutoConfiguration不足以完全禁用JPA,因为Spring Boot的JPA自动配置由多个类协同控制。直接在启动类上排除核心的JPA自动配置类:

@SpringBootApplication(exclude = {
    JpaAutoConfiguration.class,          // 核心JPA自动配置,包含EntityManagerFactory创建逻辑
    JpaRepositoriesAutoConfiguration.class, // JPA仓库扫描的自动配置类
    HibernateJpaAutoConfiguration.class  // Hibernate相关的JPA实现配置
})
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

注:如果你需要保留Spring Boot对DataSource的自动配置(你是手动配置的两个DataSource,也可以保留),不要排除DataSourceAutoConfiguration.class,否则可能影响手动配置的DataSource初始化。

二、单独禁用JPA仓库扫描

如果不想全量排除自动配置,仅需关闭JPA仓库扫描,可以在启动类上指定空的扫描路径:

@SpringBootApplication
@EnableJpaRepositories(basePackages = "") // 空路径会跳过所有仓库扫描
public class YourApplication {
    // ...
}

三、从依赖层面移除JPA相关包

如果项目完全不需要JPA功能,直接在pom.xml(Maven)或build.gradle(Gradle)中移除JPA相关依赖:

  • Maven:移除spring-boot-starter-data-jpa依赖
<!-- 移除这个依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
  • Gradle:移除对应的依赖项
// 移除这个依赖
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

这种方式从根源上避免JPA自动配置被触发,是最彻底的方案。

验证生效

启动应用后,查看日志:

  • 不再出现EntityManagerFactory初始化相关的日志
  • 无Failed to find 'entityManagerFactory' bean错误
  • 手动配置的两个JdbcTemplate仍能正常操作数据库

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:37:10