Java 是否可以在上下文配置中指定一个@Component类,使其';的依赖关系将自动解决?

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或

我想在我的Spring Boot应用程序中执行单个服务的集成测试。所以我只希望将此服务及其依赖项添加到测试应用程序上下文中

假设我在不同的包
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,谢谢:)