是否可以在上下文配置中指定一个@Component类,以便它的依赖项会自动解决?

时间:2017-12-02 20:35:49

标签: java spring spring-boot spring-test

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

假设我在不同的包中有两个类ABAB的引用),标有@Component注释。当我运行应用程序时,@SpringBootApplication找到我的所有bean并将它们添加到隐式@ComponentScan的上下文中。

在我的测试配置中,我想只指定一个类A并使Spring Boot解析它的依赖项(B)并将其添加到上下文中。

使用Spring Boot 2或者对我来说最合适的选项是否可以创建一个单独的@Configuration,其中显式声明了所需的类? (实际上有两个以上,这就是我要问的原因)

1 个答案:

答案 0 :(得分:2)

  

在我的测试配置中,我想只指定一个类A并使Spring Boot解决它的依赖关系(B)并将其添加到上下文中。

不,遗憾的是,由于Spring不知道如何找到依赖项和/或您真正想要的具体类型,因此不可能。

  

对于我来说,使用Spring Boot 2或最合适的选项是否可以创建一个单独的@Configuration,其中包含明确声明的必需类?

是的,您可以仅为此目的申报专用测试@Configuration课程;但是,您可能会发现在测试类中简单地重用 common 配置类集更有利,以便从 Spring TestContext Framework 中的上下文缓存支持中受益。