Spring 使用@SpringBootConfiguration 启动多模块应用程序

Spring Boot Multi Module application with @SpringBootConfiguration

我有一个具有结构的 Maven 多模块应用程序:

-parent_project
-actual_project
-jpaBase

父项目是以下项目的 Maven 聚合:actual_project 和 jpaBase(都是 spring 引导应用程序)

jpaBase 是 actual_project 的依赖项。

现在,当我执行 mvn 包时,出现单元测试错误:

发现多个@SpringBootConfiguration 注释classes

因为 jpaBase 和 actual_project 都有 class 用 @SpringBootConfiguration 注释。

如何确保 Spring 仅考虑 actual_project 而不是 jpaBase 的 SpringBootConfiguration class。

谢谢!

来自 Spring 文档:

Application should only ever include one @SpringBootConfiguration and most idiomatic Spring Boot applications will inherit it from @SpringBootApplication.

你说:

because both jpaBase and actual_project have classes annotated with @SpringBootConfiguration.

不应该。此注解必须由应用程序使用一次。因此,只有 actual_project 和 parent_project 是 Spring 引导应用程序应该声明此注释。

@SpringBootConfiguration 替换这些注解的声明:
@Configuration@EnableAutoConfiguration@ComponentScan

您有信息in the official documentation

因此,在您的 jpaBase 项目中,您可以替换 @SpringBootConfiguration 通过这三个注解的声明:

@Configuration
@EnableAutoConfiguration
@ComponentScan({ "yourPackage" })
public class JpaConfig {
   ....
}

实际上,对于任何看这个的人来说,SpringBootConfiguration 只替换 @Configuration

@SpringBootApplication 替换了 @Configuration@EnableAutoConfiguration@ComponentScan