Java 是否可以在上下文配置中指定一个@Component类,使其';的依赖关系将自动解决?
我想在我的Spring Boot应用程序中执行单个服务的集成测试。所以我只希望将此服务及其依赖项添加到测试应用程序上下文中 假设我在不同的包Java 是否可以在上下文配置中指定一个@Component类,使其';的依赖关系将自动解决?,java,spring,spring-boot,spring-test,Java,Spring,Spring Boot,Spring Test,我想在我的Spring Boot应用程序中执行单个服务的集成测试。所以我只希望将此服务及其依赖项添加到测试应用程序上下文中 假设我在不同的包A和B中有两个类(A在B上有一个引用),用@Component注释标记。当我运行应用程序时,@SpringBootApplication会找到我的所有bean,并使用隐式@ComponentScan将它们添加到上下文中 在我的测试配置中,我只想指定一个类A,并进行Spring引导以解决它的依赖关系(B),并将其添加到上下文中 使用Spring Boot 2或
A
和B
中有两个类(A
在B
上有一个引用),用@Component
注释标记。当我运行应用程序时,@SpringBootApplication
会找到我的所有bean,并使用隐式@ComponentScan
将它们添加到上下文中
在我的测试配置中,我只想指定一个类A
,并进行Spring引导以解决它的依赖关系(B
),并将其添加到上下文中
使用Spring Boot 2或最适合我的选项是否可以创建一个单独的@配置
,并显式声明所需的类?(事实上不止2个,这就是我问的原因)
在我的测试配置中,我只想指定一个类A
,并进行Spring引导以解决它的依赖关系(B
),并将其添加到上下文中
不,不幸的是,这是不可能的,因为Spring不知道如何定位依赖项和/或实际需要的具体类型
使用Spring Boot 2或最适合我的选项是否可以创建一个单独的@配置
,并显式声明所需的类
是的,您可以仅为此目的声明一个专用测试
@Configuration
类;然而,您可能会发现,为了从Spring TestContext框架中的上下文缓存支持中获益,只需在测试类中重用一组公共配置类就更为有益了。问题在于依赖项注入的要点是,a
不一定知道B
它的实现是什么将获取,因此Spring无法过渡地导入@Component
bean。我总是使用单独的测试@Configuration
类(很多时候,如果使用构造函数注入,您可以完全消除对Spring的需求)。使用用于Postrgres的TestContainers和用于上下文缓存的公共配置,还禁用了带有@Conditional和profiles的一些bean,谢谢:)