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

Spring Boot 3.1中@JsonTest引入JPA问题及解决方案咨询

解决方案

方案1:在@JsonTest中排除JPA自动配置类

直接在JSON测试类上通过@EnableAutoConfiguration排除JPA相关的自动配置类,强制Spring只加载JSON序列化/反序列化所需的最小上下文:

@JsonTest
@EnableAutoConfiguration(exclude = {
    JpaRepositoriesAutoConfiguration.class,
    HibernateJpaAutoConfiguration.class,
    DataSourceAutoConfiguration.class
})
public class YourJsonTest {
    // 测试逻辑代码
}

方案2:将@EnableJpaRepositories移至独立配置类

把主应用类上的@EnableJpaRepositories注解迁移到单独的配置类中,避免主类被@JsonTest扫描时触发JPA组件加载:

// 主应用类,移除@EnableJpaRepositories
@SpringBootApplication
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

// 独立JPA配置类
@Configuration
@EnableJpaRepositories(considerNestedRepositories = true)
public class JpaConfig {
    // 可添加其他JPA相关配置
}

这个方案分离了配置关注点,主应用类保持简洁,@JsonTest默认只会扫描主应用类,不会触发独立配置类的加载。

方案3:在测试中覆盖JPA配置属性

利用Spring Boot的配置覆盖特性,在@JsonTest中将嵌套仓库扫描的开关设为false,即使主类有相关注解,测试时也不会加载完整JPA组件:

@JsonTest
@TestPropertySource(properties = {
    "spring.data.jpa.repositories.consider-nested-repositories=false"
})
public class YourJsonTest {
    // 测试逻辑代码
}

这种方式无需修改主类或新增配置类,仅在测试层面调整属性,操作简单快捷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 23:28:14