我有一个maven多模块应用程序,结构如下:
-parent_project
-actual_project
-jpaBase
父项目是项目的maven聚合:actual_project和jpaBase(两个弹簧启动应用程序)
jpaBase是actual_project的依赖项。
现在当我做一个mvn包时,我收到了一个单元测试错误:
找到多个@SpringBootConfiguration注释类
因为jpaBase和actual_project都有使用@SpringBootConfiguration注释的类。
如何确保Spring只考虑spring_project的SpringBootConfiguration类,而不考虑jpaBase。
谢谢!
答案 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
。