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 .