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.