Disable Spring Data Auto Configuration

1. Introduction

In this quick tutorial, we’ll explore two different ways to disable database auto-configuration in Spring Boot, which can come in handy, say, when testing.

We’ll see examples for Redis, MongoDB, and Spring Data JPA.

Firstly, we’ll start by looking at the annotation-based approach and then we’ll look at the property file approach.

2. Disable Using Annotation

Let’s start with the MongoDB example, we’ll look at classes that need to be excluded:

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

Similarly, let’s look at disabling auto-configuration for Redis:

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

Finally, let’s look at disabling auto-configuration for Spring Data JPA:

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

3. Disable Using Property File

We can also disable auto-configuration using the property file, let’s first explore it with MongoDB:

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

Now, let’s disable it for Redis:

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

Similarly, let’s disable it for 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. Testing

For testing, we’ll check that the Spring beans for the auto-configured classes are absent in our application context.

Let’s start with the test for MongoDB. We’ll verify if the MongoTemplate bean is absent:

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

Now, let’s check for JPA. For JPA, the DataSource bean will be absent:

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

Similarly, for Redis we’ll check the RedisTemplate bean in our application context:

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

5. Conclusion

In conclusion, in this quick tutorial, we’ve explored the ways to disable Spring Boot auto-configuration for different databases.

The source code for all examples in the article is available on GitHub.

Related posts:

Java Program to Perform Postorder Recursive Traversal of a Given Binary Tree
Một số từ khóa trong Java
Java Program to Implement the Hill Cypher
Java Program to Implement Depth-limited Search
Spring 5 Testing with @EnabledIf Annotation
Java Program to Implement Merge Sort Algorithm on Linked List
Sorting Query Results with Spring Data
Create a Custom Exception in Java
Java Program to Implement the MD5 Algorithm
Spring Boot with Multiple SQL Import Files
Java Program to Implement Quick Hull Algorithm to Find Convex Hull
Spring Boot - Admin Client
Find the Registered Spring Security Filters
Introduction to Spring Data MongoDB
Hướng dẫn Java Design Pattern – Abstract Factory
Display Auto-Configuration Report in Spring Boot
Spring Boot - Bootstrapping
Java Program to Implement wheel Sieve to Generate Prime Numbers Between Given Range
Java Program to Implement Cubic convergence 1/pi Algorithm
ThreadPoolTaskExecutor corePoolSize vs. maxPoolSize
Java Program to Solve Knapsack Problem Using Dynamic Programming
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
Apache Commons Collections OrderedMap
LinkedList trong java
Spring Security OAuth2 – Simple Token Revocation
Serverless Functions with Spring Cloud Function
Hướng dẫn Java Design Pattern – Memento
Hướng dẫn Java Design Pattern – Object Pool
Spring Boot With H2 Database
Java Program to Implement the Alexander Bogomolny’s UnOrdered Permutation Algorithm for Elements Fro...
ETags for REST with Spring
Java Program to Perform Polygon Containment Test