«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. Тестирование
Для тестирования мы убедитесь, что компоненты 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.