Desativar configuração automática de dados do Spring

Desativar configuração automática de dados do Spring

1. Introdução

Neste tutorial rápido, vamos explorar duas maneiras diferentes de desativar a configuração automática do banco de dados no Spring Boot, o que pode ser útil, digamos,when testing.

Veremos exemplos para Redis, MongoDB e Spring Data JPA.

Em primeiro lugar, começaremos examinando a abordagem baseada em anotações e, em seguida, examinaremos a abordagem do arquivo de propriedade.

2. Desativar usando anotação

Vamos começar com o exemploMongoDB, veremos as classes que precisam ser excluídas:

@SpringBootApplication(exclude = {
    MongoAutoConfiguration.class,
    MongoDataAutoConfiguration.class
})

Da mesma forma, vejamos como desabilitar a configuração automática paraRedis:

@SpringBootApplication(exclude = {
    RedisAutoConfiguration.class,
    RedisRepositoryAutoConfiguration.class
})

Finalmente, vamos ver como desabilitar a configuração automática paraSpring Data JPA:

@SpringBootApplication(exclude = {
    DataSourceAutoConfiguration.class,
    DataSourceTransactionManagerAutoConfiguration.class,
    HibernateJpaAutoConfiguration.class
})

3. Desativar usando arquivo de propriedade

Também podemos desabilitar a configuração automática usando o arquivo de propriedade, vamos primeiro explorá-lo com o MongoDB:

spring.autoconfigure.exclude= \
  org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, \
  org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration

Agora, vamos desativá-lo para Redis:

spring.autoconfigure.exclude= \
  org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration, \
  org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration

Da mesma forma, vamos desativá-lo para 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. Teste

Para teste, vamos verificar se os beans Spring para as classes configuradas automaticamente estão ausentes em nossoapplication context.

Vamos começar com o teste para MongoDB. Verificaremos se o beanMongoTemplate está ausente:

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

Agora, vamos verificar o JPA. Para JPA, o beanDataSource estará ausente:

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

Da mesma forma, para Redis, verificaremos o beanRedisTemplate em nosso contexto de aplicativo:

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

5. Conclusão

Concluindo, neste tutorial rápido, exploramos as maneiras de desabilitar a configuração automática do Spring Boot para bancos de dados diferentes.

O código-fonte de todos os exemplos do artigo está disponível emGitHub.