如何防止Spring Boot在启动时自动创建bean'entityManagerFactory'的实例?

rmu*_*lay 4 java spring unit-testing spring-boot spring-boot-test

我正在使用Spring JPA与结合使用的Spring引导应用程序PostgreSQL。我@SpringBootTest(classes = <my package>.Application.class)用来初始化控制器类的单元测试。

问题在于,这导致创建了entityManagerFactorybean(以及许多其他与jpa,数据源,jdbc等有关的对象),而单元测试则不需要。有没有一种方法可以防止Spring在第一次实际使用它们之前自动创建这些对象?

我花了很多时间尝试仅加载单元测试所需的bean,但遇到许多错误。我对Spring还是比较陌生,希望其他人在此之前遇到过……并能为您提供帮助。如果需要,我可以发布代码段。

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

  @Configuration
  @ComponentScan(basePackages = {"api.controller", "api.config", "api.utils"})
  public class TestControllerConfig {
  }
Run Code Online (Sandbox Code Playgroud)

我模拟了服务和存储库类。

Arp*_*wal 5

您可以使用的属性在spring-boot中禁用自动配置,如下所示:exclude@EnableAutoConfiguration

@Configuration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class TestConfig {
}
Run Code Online (Sandbox Code Playgroud)

@EnableAutoConfiguration文档:

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