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

时间:2016-12-11 19:14:46

标签: java spring maven spring-boot multi-module

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

-parent_project
-actual_project
-jpaBase

父项目是项目的maven聚合:actual_project和jpaBase(两个弹簧启动应用程序)

jpaBase是actual_project的依赖项。

现在当我做一个mvn包时,我收到了一个单元测试错误:

找到多个@SpringBootConfiguration注释类

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

如何确保Spring只考虑spring_project的SpringBootConfiguration类,而不考虑jpaBase。

谢谢!

2 个答案:

答案 0 :(得分:3)

从Spring文档:

  

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

你说:

  

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

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

@SpringBootConfiguration取代了这些注释的声明:
@Configuration@EnableAutoConfiguration@ComponentScan

您有信息in the official documentation

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

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

答案 1 :(得分:0)

实际上,对于任何看到此内容的人来说,SpringBootConfiguration只会替换@Configuration

@SpringBootApplication取代@Configuration@EnableAutoConfiguration@ComponentScan