【发布时间】:2017-06-03 11:05:13
【问题描述】:
我有一个数据项目和 UI 项目。这两个项目都是 Spring Boot 应用程序。这两个项目具有相同的根包 (com.myorg),主类使用 @SpringBootApplication 注释。
数据项目的主类是:
package com.myorg;
@SpringBootApplication
public class DataApplication {
public static void main(String[] args) {
SpringApplication.run(DataApplication.class, args);
}
}
UI项目的主类是:
package com.myorg;
@SpringBootApplication
public class UiApplication {
public static void main(String[] args) {
SpringApplication.run(UiApplication .class, args);
}
}
UI 项目通过以下 Gradle 依赖依赖于数据项目:
dependencies {
compile('com.myorg:data:1.0')
}
如果我运行 UI 应用程序,它可以正常运行。但是,如果我在 UI 应用程序中运行集成测试,如下所示:
package com.myorg
@RunWith(SpringRunner.class)
@SpringBootTest
public class UiIntTest {
@Test
public void contextLoads() {
}
}
出现如下初始化错误:
java.lang.IllegalStateException: Found multiple @SpringBootConfiguration annotated classes
在数据项目的主类中,如果我将@SpringBootApplication替换为
@Configuration
@EnableAutoConfiguration
@ComponentScan({ "com.myorg" })
我在尝试运行其集成测试时收到以下初始化错误:
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test
例如,如果我尝试运行:
package com.myorg
@RunWith(SpringRunner.class)
@SpringBootTest
public class DataIntTest {
@Test
public void contextLoads() {
}
}
如何正确配置数据和 UI 项目?
【问题讨论】:
-
显示更多代码。添加你的包结构和层次结构
-
@Olayinka - 我添加了更多代码和包结构细节。如果我仍然缺少一些相关细节,请告诉我。
-
同一个包中不能有两个springapplication注解
-
作为记录,您可以在同一个包中拥有 2 个 SpringBootApplication。这是否是一个好主意是另一回事。当有多个时,需要在
pom.xml中指定main-class属性
标签: spring spring-boot