带有 @SpringBootConfiguration 的 Spring Boot 多模块应用程序

Suv*_*jee 3 java spring maven multi-module spring-boot

我有一个 maven 多模块应用程序,其结构如下:

-parent_project
-actual_project
-jpaBase
Run Code Online (Sandbox Code Playgroud)

父项目是项目的 maven 聚合:actual_project 和 jpaBase(都是 spring boot 应用程序)

jpaBase 是 actual_project 的依赖项。

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

发现多个@SpringBootConfiguration 注解类

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

如何确保 Spring 只考虑 actual_project 而不是 jpaBase 的 SpringBootConfiguration 类。

谢谢!

dav*_*xxx 5

从 Spring 文档:

应用程序应该只包含一个 @SpringBootConfiguration 并且大多数惯用的 Spring Boot 应用程序将从 @SpringBootApplication 继承它。

你说 :

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

不应该。此注释必须由应用程序使用一次。所以,只有作为 Spring Boot 应用程序的 actual_project 和 parent_project 应该声明这个注解。

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

在官方文档中有信息。

因此,在您的 jpaBase 项目中,您可以替换 @SpringBootConfiguration为以下三个注释的声明:

@Configuration
@EnableAutoConfiguration
@ComponentScan({ "yourPackage" })
public class JpaConfig {
   ....
}
Run Code Online (Sandbox Code Playgroud)