Перейти к основному содержимому

Отключить автоматическую настройку данных Spring

· 2 мин. чтения

1. Введение

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

Мы увидим примеры для 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. Тестирование

Для тестирования мы проверим, что bean-компоненты Spring для автоматически настраиваемых классов отсутствуют в контексте нашего приложения .

Начнем с теста для MongoDB. Мы проверим, отсутствует ли bean- компонент MongoTemplate :

@Test(expected = NoSuchBeanDefinitionException.class)
public void givenAutoConfigDisabled_whenStarting_thenNoAutoconfiguredBeansInContext() {
context.getBean(MongoTemplate.class);
}

Теперь давайте проверим JPA. Для JPA bean-компонент DataSource будет отсутствовать:

@Test(expected = NoSuchBeanDefinitionException.class)
public void givenAutoConfigDisabled_whenStarting_thenNoAutoconfiguredBeansInContext() {
context.getBean(DataSource.class);
}

Точно так же для Redis мы проверим bean- компонент RedisTemplate в контексте нашего приложения:

@Test(expected = NoSuchBeanDefinitionException.class)
public void givenAutoConfigDisabled_whenStarting_thenNoAutoconfiguredBeansInContext() {
context.getBean(RedisTemplate.class);
}

5. Вывод

В заключение, в этом кратком руководстве мы рассмотрели способы отключения автоматической настройки Spring Boot для разных баз данных.

Исходный код всех примеров в статье доступен на GitHub .