Как предотвратить spring boot от автоматического создания экземпляра bean 'entityManagerFactory' при запуске?



Я работаю над приложением Spring boot, которое использует Spring JPA с PostgreSQL. Я использую @SpringBootTest(classes = <my package>.Application.class) для инициализации моего модульного теста для класса контроллера.



Проблема заключается в том, что это вызывает entityManagerFactory bean (и многие другие объекты, связанные с jpa, datasource, jdbc и т. д.) будет создан, который не нужен для модульных тестов. Есть ли способ предотвратить автоматическое создание Spring этих объектов до тех пор, пока они не будут использованы в первый раз?

Я потратил много времени, пытаясь загрузить только бобы, которые мне нужны для моего юнит-теста, но я столкнулся со многими ошибками. Я относительно новичок в Весне, и я надеюсь, что кто-то еще сталкивался с этим раньше...и может помочь. Я могу отправлять фрагменты кода, если это необходимо.



Обновление: я не уверен, должен ли я редактировать или отвечать на свой собственный вопрос...выбор в пользу редактирования, так как я в конечном итоге изменил свой подход к модульным тестам. Я добавил Это в свой тестовый класс конфигурации.



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


И я высмеял классы сервиса и репозитория.

584   1  

1 ответ:

Вы можете отключить автоматическую настройку в spring-boot , используя атрибут exclude @EnableAutoConfiguration, следующим образом:

@Configuration
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class})
public class TestConfig {
}

Из документации @EnableAutoConfiguration:

если класс не находится на пути к классу, можно использоватьexcludeName атрибут аннотации и укажите вместо него полное имя. Наконец, вы также можете управлять списком классов автоматической настройки для исключения с помощью spring.autoconfigure.exclude собственность.

Comments

    Ничего не найдено.