Как предотвратить 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 {
}
И я высмеял классы сервиса и репозитория.
1 ответ:
Вы можете отключить автоматическую настройку в spring-boot , используя атрибут
exclude@EnableAutoConfiguration, следующим образом:@Configuration @EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class}) public class TestConfig { }Из документации
@EnableAutoConfiguration:если класс не находится на пути к классу, можно использовать
excludeNameатрибут аннотации и укажите вместо него полное имя. Наконец, вы также можете управлять списком классов автоматической настройки для исключения с помощьюspring.autoconfigure.excludeсобственность.
Comments