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
。
我有一个具有结构的 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
。