Home > Mobile >  How to find Spring Boot auto-configuration classes that are activated by adding a specific starter p
How to find Spring Boot auto-configuration classes that are activated by adding a specific starter p

Time:07-07

How Spring Boot auto-configuration classes are activated based on the maven starter projects that are included in project pom.xml as dependencies?

for example, by adding spring-boot-starter-security to pom.xml:

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

class SecurityAutoConfiguration is activated. how does this happen? How SecurityAutoConfiguration is related to spring-boot-starter-security?

the starter project themselves are completely empty, there is no java code in these starter projects, and just a couple of dependencies is defined in pom.xml. I want to know exactly what happens when I add a starter project to my Spring Boot project and exactly what configurations are applied.

CodePudding user response:

You can find it here - https://www.baeldung.com/spring-boot-security-autoconfiguration

Basically, either property for the starter can be disabled or exclude specific auto configuration from @springboot(exclude = SecurityAutoConfiguration.class )

CodePudding user response:

Autoconfiguration is one, or maybe the main one, feature of SpringBoot Basically, depending on certain conditions, some configurations or/and beans are made available. In your case here is what happens :

  • spring-boot-starter-security, as other starters, is just here to make some others dependencies available for your project, particulary spring-security-config which itself, has a dependency on spring-security-core
  • If your looking at the code source of SecurityAutoConfiguration you can see that is configuration class depends on the availabality of the class DefaultAuthenticationEventPublisher, which is true as now you have a (transitive) dependency on spring-security-core.
  • This SecurityAutoConfiguration class is listed as a Autoconfiguration class inside the config file org.springframework.boot.autoconfigure.AutoConfiguration.imports (spring.factories for some previous Spring Boot version) of the spring-boot-autoconfigure project, which make it active for your application.

Here you can find the documentation : https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.developing-auto-configuration.understanding-auto-configured-beans

  • Related