Display Auto-Configuration Report in Spring Boot

Spring Boot's auto-configuration feature simplifies the setup of a Spring application by automatically configuring beans based on the dependencies and configurations in your project. Spring Boot provides an auto-configuration report to help understand which configurations are applied and troubleshoot issues. This tutorial will guide you through the steps to display the auto-configuration report in a Spring Boot application.

Prerequisites

  • JDK 17 or later
  • Maven or Gradle
  • IDE (IntelliJ IDEA, Eclipse, etc.)

Step 1: Set Up a Spring Boot Project

1.1 Create a New Spring Boot Project

Use Spring Initializr to create a new project with the following dependencies:

  • Spring Web
  • Spring Boot Actuator

Download and unzip the project, then open it in your IDE.

1.2 Configure application.properties

Set up the application properties for your project. This file is located in the src/main/resources directory.

# src/main/resources/application.properties

server.port=8080
management.endpoints.web.exposure.include=*

Explanation:

  • management.endpoints.web.exposure.include=*: Exposes all actuator endpoints, including the auto-configuration report.

Step 2: Enable Auto-Configuration Report

The auto-configuration report is part of Spring Boot Actuator. By enabling the Actuator endpoints, you can access the auto-configuration report.

2.1 Add Actuator Dependency

Ensure that you have included the Spring Boot Actuator dependency in your pom.xml (for Maven) or build.gradle (for Gradle).

For Maven:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

For Gradle:

implementation 'org.springframework.boot:spring-boot-starter-actuator'

2.2 Expose the Actuator Endpoints

The Actuator endpoints, including the auto-configuration report, need to be exposed. This can be done in the application.properties file as shown earlier.

management.endpoints.web.exposure.include=*

Step 3: Access the Auto-Configuration Report

3.1 Run the Application

Run the Spring Boot application using your IDE or the command line:

./mvnw spring-boot:run

3.2 Access the Auto-Configuration Report

Open your browser and navigate to http://localhost:8080/actuator/autoconfig. This endpoint provides a detailed auto-configuration report.

Alternatively, you can use the /actuator/configprops endpoint to view configuration properties:

http://localhost:8080/actuator/configprops

Explanation:

  • http://localhost:8080/actuator/autoconfig: This endpoint shows the auto-configuration report, detailing which configurations were applied and which were not.
  • http://localhost:8080/actuator/configprops: This endpoint shows all the configuration properties in use.

Step 4: Understand the Auto-Configuration Report

4.1 Structure of the Auto-Configuration Report

The auto-configuration report is divided into two main sections:

  • Positive Matches: Configurations that were applied.
  • Negative Matches: Configurations that were not applied, including the reason why they were not applied.

4.2 Example Report

Here is an example of what the auto-configuration report might look like:

{
  "positiveMatches": {
    "DataSourceAutoConfiguration": {
      "matched": [
        {
          "condition": "OnClassCondition",
          "message": "@ConditionalOnClass found required class 'javax.sql.DataSource'"
        },
        ...
      ],
      "notMatched": []
    },
    ...
  },
  "negativeMatches": {
    "MongoAutoConfiguration": {
      "notMatched": [
        {
          "condition": "OnClassCondition",
          "message": "@ConditionalOnClass did not find required class 'com.mongodb.MongoClient'"
        },
        ...
      ],
      "matched": []
    },
    ...
  }
}

Explanation:

  • positiveMatches: Lists the configurations that were successfully applied.
  • negativeMatches: Lists the configurations that were not applied and provides reasons for why they were not applied.

Step 5: Customizing Auto-Configuration

You can customize which auto-configurations are applied in your Spring Boot application.

5.1 Exclude Auto-Configuration Classes

If you want to exclude specific auto-configuration classes, you can use the @SpringBootApplication annotation with the exclude attribute.

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

5.2 Use Conditional Annotations

You can use conditional annotations like @ConditionalOnClass, @ConditionalOnMissingBean, and others to control when specific configurations are applied.

package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Conditional;
import com.example.demo.condition.OnCustomCondition;
import com.example.demo.service.CustomService;

@Configuration
public class CustomConfig {

    @Bean
    @Conditional(OnCustomCondition.class)
    public CustomService customService() {
        return new CustomService();
    }
}

Step 6: Advanced Auto-Configuration Report Access

You can also programmatically access the auto-configuration report in your Spring Boot application.

6.1 Create a Custom Endpoint

Create a custom endpoint to expose the auto-configuration report.

package com.example.demo.endpoint;

import org.springframework.boot.actuate.autoconfigure.condition.ConditionsReportEndpoint;
import org.springframework.boot.autoconfigure.condition.ConditionEvaluationReport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CustomEndpointConfig {

    @Bean
    public ConditionsReportEndpoint conditionsReportEndpoint() {
        return new ConditionsReportEndpoint();
    }
}

6.2 Access the Custom Endpoint

Run your application and access the custom endpoint at http://localhost:8080/actuator/conditions.

Conclusion

In this tutorial, you have learned how to display the auto-configuration report in a Spring Boot application. By exposing Actuator endpoints and understanding the structure of the auto-configuration report, you can gain insights into the configurations applied in your application. This helps in troubleshooting and customizing the auto-configuration behavior to better suit your application's needs.


Comments