@SpringBootConfiguration重复加载报错问题解决

 更新时间:2024年08月07日 10:32:16   作者:你这个代码我看不懂  
@SpringBootApplication 注解的 exclude 属性用于排除特定的自动配置类,而不是用于排除主配置类本身,因此,不能通过 exclude 属性来排除主配置类的加载,这篇文章主要介绍了@SpringBootConfiguration重复加载报错,需要的朋友可以参考下

Junit单元测试@Test启动报错,@SpringBootConfiguration注解重复问题排查:

@SpringBootApplication 注解的 exclude 属性用于排除特定的自动配置类,而不是用于排除主配置类本身。因此,不能通过 exclude 属性来排除主配置类的加载。

正确的使用方式

如果你想排除某些自动配置类,可以使用 exclude 属性。例如:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class PortalApplication {
    public static void main(String[] args) {
        SpringApplication.run(PortalApplication.class, args);
    }
}

排除主配置类的加载

如果你确实需要在某些情况下排除主配置类的加载,可以考虑以下几种方法:

1. 使用不同的配置类

你可以创建不同的配置类,并在不同的环境中使用不同的配置类。例如,可以创建一个测试配置类,并在测试中使用它。

// 主配置类
@SpringBootApplication
public class PortalApplication {
    public static void main(String[] args) {
        SpringApplication.run(PortalApplication.class, args);
    }
}
// 测试配置类
@SpringBootApplication
public class TestApplication {
    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }
}

在测试类中使用 @SpringBootTest 注解来指定测试配置类:

import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.junit.runner.RunWith;
import org.junit.Test;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestApplication.class)
public class PortalApplicationTest {
    @Test
    public void contextLoads() {
        // 测试内容
    }
}

2. 使用 @TestConfiguration

如果你只需要在测试中排除某些配置,可以使用 @TestConfiguration 注解来创建测试专用的配置类。

import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.context.annotation.Bean;
@TestConfiguration
public class TestConfig {
    @Bean
    public SomeBean someBean() {
        return new SomeBean();
    }
}

在测试类中使用 @Import 注解来导入测试配置类:

import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.context.annotation.Import;
import org.junit.runner.RunWith;
import org.junit.Test;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = PortalApplication.class)
@Import(TestConfig.class)
public class PortalApplicationTest {
    @Test
    public void contextLoads() {
        // 测试内容
    }
}

总结

  • @SpringBootApplicationexclude 属性:用于排除特定的自动配置类,而不是用于排除主配置类本身。
  • 不同的配置类:可以创建不同的配置类,并在不同的环境中使用不同的配置类。@TestConfiguration:用于创建测试专用的配置类,并在测试中使用。

到此这篇关于@SpringBootConfiguration重复加载报错的文章就介绍到这了,更多相关@SpringBootConfiguration重复加载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java关键字synchronized基本使用详解

    Java关键字synchronized基本使用详解

    这篇文章主要给大家介绍了关于Java关键字synchronized基本使用的相关资料,synchronized可以用来同步静态和非静态方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • SpringCloud通过Feign传递List类型参数方式

    SpringCloud通过Feign传递List类型参数方式

    这篇文章主要介绍了SpringCloud通过Feign传递List类型参数方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Spring中@RequestParam、@RequestBody和@PathVariable的用法详解

    Spring中@RequestParam、@RequestBody和@PathVariable的用法详解

    这篇文章主要介绍了Spring中@RequestParam、@RequestBody和@PathVariable的用法详解,后端使用集合来接受参数,灵活性较好,如果url中没有对参数赋key值,后端在接收时,会根据参数值的类型附,赋一个初始key,需要的朋友可以参考下
    2024-01-01
  • 详解SpringBoot如何优雅的处理免登录接口

    详解SpringBoot如何优雅的处理免登录接口

    在项目开发过程中,会有很多API接口不需要登录就能直接访问,比如公开数据查询之类的,常规处理方法基本是 使用拦截器或过滤器,拦截需要认证的请求路径,本文介绍一个更优雅的方法自定义注解的方式,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • spring boot+mybatis搭建一个后端restfull服务的实例详解

    spring boot+mybatis搭建一个后端restfull服务的实例详解

    这篇文章主要介绍了spring boot+mybatis搭建一个后端restfull服务,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Java中优先队列PriorityQueue常用方法示例

    Java中优先队列PriorityQueue常用方法示例

    这篇文章主要介绍了Java中优先队列PriorityQueue常用方法示例,PriorityQueue是一种特殊的队列,满足队列的“队尾进、队头出”条件,但是每次插入或删除元素后,都对队列进行调整,使得队列始终构成最小堆(或最大堆),需要的朋友可以参考下
    2023-09-09
  • 使用JPA+querydsl如何实现多条件动态查询

    使用JPA+querydsl如何实现多条件动态查询

    这篇文章主要介绍了使用JPA+querydsl如何实现多条件动态查询,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java常用字符串方法小结

    Java常用字符串方法小结

    字符串变量是Java与C语言的一大不同之处。Java之中的 String 类和 Stringbuffer 类提供了大量的对字符串操作的方法。String 类适合处理较小的字符串,而Stringbuffer类适合处理大量字符串
    2017-04-04
  • 在Spring Boot中加载XML配置的完整步骤

    在Spring Boot中加载XML配置的完整步骤

    这篇文章主要给大家介绍了关于在Spring Boot中加载XML配置的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java使用枚举实现状态机的方法详解

    Java使用枚举实现状态机的方法详解

    这篇文章主要介绍了Java使用枚举实现状态机的方法详解,枚举类型很适合用来实现状态机,状态机可以处于有限数量的特定状态,它们通常根据输入,从一个状态移动到下一个状态,但同时也会存在瞬态,需要的朋友可以参考下
    2023-11-11

最新评论