@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() {
// 测试内容
}
}总结
@SpringBootApplication的exclude属性:用于排除特定的自动配置类,而不是用于排除主配置类本身。- 不同的配置类:可以创建不同的配置类,并在不同的环境中使用不同的配置类。
@TestConfiguration:用于创建测试专用的配置类,并在测试中使用。
到此这篇关于@SpringBootConfiguration重复加载报错的文章就介绍到这了,更多相关@SpringBootConfiguration重复加载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot2整合activiti6环境搭建过程解析
这篇文章主要介绍了SpringBoot2整合activiti6环境搭建过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-11-11
WebSocket获取httpSession空指针异常的解决办法
这篇文章主要介绍了在使用WebSocket实现p2p或一对多聊天功能时,如何获取HttpSession来获取用户信息,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧2025-01-01
Jackson反序列化@JsonFormat 不生效的解决方案
这篇文章主要介绍了Jackson反序列化@JsonFormat 不生效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08
Java使用 Stream 流和 Lambda 组装复杂父子树形结构
在最近的开发中,遇到了两个类似的需求:都是基于 Stream 的父子树形结构操作,返回 List 集合对象给前端,下面给大家分享Java使用 Stream 流和 Lambda 组装复杂父子树形结构的相关操作,感兴趣的朋友跟随小编一起看看吧2024-07-07


最新评论