如何防止spring boot在启动时自动创建bean'entualManagerFactory'的实例?

时间:2017-01-28 23:08:06

标签: java spring unit-testing spring-boot spring-boot-test

我正在使用Spring JPAPostgreSQL一起使用的Spring启动应用程序。我正在使用@SpringBootTest(classes = <my package>.Application.class)初始化控制器类的单元测试。

问题在于这会导致创建entityManagerFactory bean(以及与jpa,datasource,jdbc等相关的许多其他对象),单元测试不需要这些对象。有没有办法阻止Spring自动创建这些对象,直到第一次实际使用它们为止?

我花了很多时间尝试仅加载我单元测试所需的bean但遇到了很多错误。我对Spring比较陌生,我希望别人之前碰到过这个......并且可以提供帮助。如果需要,我可以发布代码片段。

更新:我不确定是否应该编辑或回答我自己的问题...选择编辑,因为我最终改变了我的单元测试方法。我把它添加到我的测试配置类中。

  @Configuration
  @ComponentScan(basePackages = {"api.controller", "api.config", "api.utils"})
  public class TestControllerConfig {
  }

我嘲笑了服务和存储库类。

1 个答案:

答案 0 :(得分:5)

您可disable auto configuration in spring-boot使用exclude的{​​{1}}属性,如下所示:

@EnableAutoConfiguration

来自@Configuration @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) public class TestConfig { } 文档:

如果类不在类路径中,则可以使用注释的 @EnableAutoConfiguration 属性,并指定完全限定名称。最后,您还可以通过 excludeName 属性控制要排除的自动配置类列表。