1. введение
В этом кратком руководстве мы рассмотрим два различных способа отключения автоматической настройки базы данных при весенней загрузке, которые могут пригодиться, скажем, при тестировании .
Мы увидим примеры для Redis, MongoDB и Spring Data JPA.
Во-первых, мы начнем с подхода, основанного на аннотациях, а затем рассмотрим подход к файлу свойств.
2. Отключите Использование аннотаций
Давайте начнем с примера MongoDB, мы рассмотрим классы, которые необходимо исключить:
@SpringBootApplication(exclude = { MongoAutoConfiguration.class, MongoDataAutoConfiguration.class })
Аналогично, давайте рассмотрим отключение автоматической настройки для Redis:
@SpringBootApplication(exclude = { RedisAutoConfiguration.class, RedisRepositoryAutoConfiguration.class })
Наконец, давайте рассмотрим отключение автоматической настройки для Spring Data JPA:
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
3. Отключите использование Файла свойств
Мы также можем отключить автоматическую настройку с помощью файла свойств, давайте сначала рассмотрим его с помощью MongoDB:
spring.autoconfigure.exclude= \ org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, \ org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration
Теперь давайте отключим его для Redis:
spring.autoconfigure.exclude= \ org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration, \ org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration
Аналогично, давайте отключим его для Spring Data JPA:
spring.autoconfigure.exclude= \ org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, \ org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration, \ org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
4. Тестирование
Для тестирования мы проверим, что компоненты Spring для автоматически настроенных классов отсутствуют в контексте нашего приложения .
Давайте начнем с теста для MongoDB. Мы проверим, отсутствует ли MongoTemplate bean:
@Test(expected = NoSuchBeanDefinitionException.class) public void givenAutoConfigDisabled_whenStarting_thenNoAutoconfiguredBeansInContext() { context.getBean(MongoTemplate.class); }
Теперь давайте проверим JPA. Для JPA компонент DataSource будет отсутствовать:
@Test(expected = NoSuchBeanDefinitionException.class) public void givenAutoConfigDisabled_whenStarting_thenNoAutoconfiguredBeansInContext() { context.getBean(DataSource.class); }
Аналогично, для Redis мы проверим RedisTemplate bean в контексте нашего приложения:
@Test(expected = NoSuchBeanDefinitionException.class) public void givenAutoConfigDisabled_whenStarting_thenNoAutoconfiguredBeansInContext() { context.getBean(RedisTemplate.class); }
5. Заключение
В заключение, в этом кратком руководстве мы рассмотрели способы отключения автоматической настройки Spring Boot для различных баз данных.
Исходный код для всех примеров в статье доступен на GitHub .