or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

cache-configuration.mdconditional-configuration.mdcore-autoconfiguration.mddata-configuration.mdindex.mdjson-configuration.mdmessaging-configuration.mdsecurity-configuration.mdservice-connections.mdtemplate-configuration.mdweb-configuration.md
tile.json

tessl/maven-org-springframework-boot--spring-boot-autoconfigure

Automatic configuration capabilities for Spring applications based on classpath contents and environment properties

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.springframework.boot/spring-boot-autoconfigure@3.5.x

To install, run

npx @tessl/cli install tessl/maven-org-springframework-boot--spring-boot-autoconfigure@3.5.0

index.mddocs/

Spring Boot AutoConfigure

Spring Boot AutoConfigure provides automatic configuration capabilities for Spring applications through conditional bean registration and configuration based on classpath contents, environment properties, and other conditions. It includes auto-configurations for over 50 different technologies and frameworks, enabling "convention over configuration" development with intelligent defaults and extensive customization options.

Package Information

  • Package Name: spring-boot-autoconfigure
  • Package Type: maven
  • Language: Java
  • Group ID: org.springframework.boot
  • Artifact ID: spring-boot-autoconfigure
  • Installation: Add dependency to your build configuration

Maven:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
    <version>3.5.3</version>
</dependency>

Gradle:

implementation 'org.springframework.boot:spring-boot-autoconfigure:3.5.3'

Core Imports

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.condition.*;
import org.springframework.boot.context.properties.ConfigurationProperties;

Basic Usage

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

// Primary way to enable auto-configuration
@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

// Alternative: explicit auto-configuration enabling
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class MyConfiguration {
    // Configuration beans
}

Architecture

Spring Boot AutoConfigure is built around several key architectural patterns:

  • Conditional Configuration: Uses sophisticated @ConditionalOn* annotations to determine when configurations should be applied
  • Auto-Configuration Classes: Named *AutoConfiguration, these classes define beans and configurations for specific technologies
  • Configuration Properties: *Properties classes provide type-safe external configuration binding
  • Import Selectors: Automatically discover and load auto-configuration classes based on classpath contents
  • Customization Points: *Customizer interfaces allow fine-grained modification of auto-configurations
  • Ordering Control: @AutoConfigureBefore and @AutoConfigureAfter manage configuration dependencies

Capabilities

Core Auto-Configuration

Primary annotations and classes that form the foundation of Spring Boot's auto-configuration system.

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication {
    Class<?>[] exclude() default {};
    String[] excludeName() default {};
    String[] scanBasePackages() default {};
    Class<?>[] scanBasePackageClasses() default {};
}

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
public @interface EnableAutoConfiguration {
    String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
    Class<?>[] exclude() default {};
    String[] excludeName() default {};
}

Core Auto-Configuration

Conditional Configuration

Comprehensive set of conditional annotations that determine when auto-configurations should be applied based on various runtime conditions.

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional(OnClassCondition.class)
public @interface ConditionalOnClass {
    Class<?>[] value() default {};
    String[] name() default {};
}

@Target({ElementType.TYPE, ElementType.METHOD})  
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional(OnBeanCondition.class)
public @interface ConditionalOnMissingBean {
    Class<?>[] value() default {};
    String[] type() default {};
    String[] name() default {};
}

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Conditional(OnPropertyCondition.class)
public @interface ConditionalOnProperty {
    String[] value() default {};
    String prefix() default "";
    String[] name() default {};
    String havingValue() default "";
    boolean matchIfMissing() default false;
}

Conditional Configuration

Web Application Configuration

Auto-configuration for web applications including Spring MVC, WebFlux, embedded servers, and web-related components.

@AutoConfiguration
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass(DispatcherServlet.class)
public class DispatcherServletAutoConfiguration {
    // Configuration for Spring MVC DispatcherServlet
}

@AutoConfiguration
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass(ServletRequest.class)
public class ServletWebServerFactoryAutoConfiguration {
    // Configuration for servlet web server factories
}

@AutoConfiguration
@ConditionalOnWebApplication(type = Type.REACTIVE)
@ConditionalOnClass(WebFluxConfigurer.class)  
public class WebFluxAutoConfiguration {
    // Configuration for Spring WebFlux
}

Web Configuration

Data Access Configuration

Comprehensive data access auto-configurations for relational databases, NoSQL systems, and data repositories.

@AutoConfiguration
@ConditionalOnClass({DataSource.class, JdbcTemplate.class})
public class DataSourceAutoConfiguration {
    // DataSource configuration
}

@AutoConfiguration
@ConditionalOnClass(JpaRepository.class)
@ConditionalOnMissingBean({JpaRepositoryFactoryBean.class, JpaRepositoryConfigExtension.class})
public class JpaRepositoriesAutoConfiguration {
    // JPA repositories configuration
}

@AutoConfiguration
@ConditionalOnClass({RedisOperations.class, JedisConnection.class})
public class RedisAutoConfiguration {
    // Redis configuration
}

Data Configuration

Security Configuration

Auto-configuration for Spring Security including servlet security, reactive security, OAuth2, and SAML integration.

@AutoConfiguration
@ConditionalOnClass(SecurityFilterChain.class)
@ConditionalOnWebApplication(type = Type.SERVLET)
public class SecurityAutoConfiguration {
    // Spring Security configuration
}

@AutoConfiguration
@ConditionalOnClass({OAuth2AuthorizedClient.class, ReactiveOAuth2AuthorizedClientService.class})
@ConditionalOnWebApplication(type = Type.REACTIVE)
public class ReactiveOAuth2ClientAutoConfiguration {
    // Reactive OAuth2 client configuration
}

Security Configuration

Messaging Configuration

Auto-configurations for messaging systems including JMS, AMQP (RabbitMQ), Apache Kafka, and Apache Pulsar.

@AutoConfiguration
@ConditionalOnClass({Message.class, JmsTemplate.class})
public class JmsAutoConfiguration {
    // JMS configuration
}

@AutoConfiguration  
@ConditionalOnClass({RabbitTemplate.class, Channel.class})
public class RabbitAutoConfiguration {
    // RabbitMQ configuration
}

@AutoConfiguration
@ConditionalOnClass(KafkaTemplate.class)
public class KafkaAutoConfiguration {
    // Apache Kafka configuration
}

Messaging Configuration

Template Engine Configuration

Auto-configurations for template engines including Thymeleaf, FreeMarker, Mustache, and Groovy templates.

@AutoConfiguration
@ConditionalOnClass({TemplateMode.class, SpringTemplateEngine.class})
public class ThymeleafAutoConfiguration {
    // Thymeleaf template engine configuration
}

@AutoConfiguration
@ConditionalOnClass({freemarker.template.Configuration.class, FreeMarkerConfigurationFactory.class})
public class FreeMarkerAutoConfiguration {
    // FreeMarker template engine configuration  
}

Template Engine Configuration

JSON Processing Configuration

Auto-configurations for JSON processing libraries including Jackson, Gson, and JSON-B.

@AutoConfiguration
@ConditionalOnClass(ObjectMapper.class)
public class JacksonAutoConfiguration {
    // Jackson JSON processing configuration
}

@AutoConfiguration
@ConditionalOnClass(Gson.class)
public class GsonAutoConfiguration {
    // Google Gson configuration
}

JSON Processing Configuration

Cache Configuration

Auto-configurations for caching providers including Redis, Caffeine, EhCache, and Hazelcast.

@AutoConfiguration
@ConditionalOnClass(CacheManager.class)
@ConditionalOnBean(CacheAspectSupport.class)
public class CacheAutoConfiguration {
    // Cache abstraction configuration
}

@AutoConfiguration
@ConditionalOnClass({RedisOperations.class, RedisCacheManager.class})
public class RedisCacheConfiguration {
    // Redis cache configuration
}

Cache Configuration

Service Connection API

Standardized API for defining and accessing connection details for external services including databases, messaging systems, and caching providers.

/**
 * Base interface for types that provide connection details to remote services
 */
public interface ConnectionDetails {
    // Marker interface - specific implementations provide actual connection details
}

/**
 * Factory to create ConnectionDetails from a given source
 */
public interface ConnectionDetailsFactory<S, D extends ConnectionDetails> {
    D getConnectionDetails(S source);
}

/**
 * Details required to establish a connection to a JDBC database
 */
public interface JdbcConnectionDetails extends ConnectionDetails {
    String getJdbcUrl();
    default String getUsername() { return null; }
    default String getPassword() { return null; }
    default String getDriverClassName() { return null; }
}

Service Connections

Types

Core Configuration Types

public class AutoConfigurationPackages {
    public static List<String> get(BeanFactory beanFactory);
    public static void register(BeanDefinitionRegistry registry, String... packageNames);
}

public final class AutoConfigurations extends Configurations {
    public static AutoConfigurations of(Class<?>... classes);
}

public interface AutoConfigurationMetadata {
    boolean wasProcessed(String className);
    Integer getInteger(String className, String key);
    Integer getInteger(String className, String key, Integer defaultValue);
    Set<String> getSet(String className, String key);
    Set<String> getSet(String className, String key, Set<String> defaultValue);
    String get(String className, String key);
    String get(String className, String key, String defaultValue);
}

Condition Types

public enum SearchStrategy {
    CURRENT, ANCESTORS, ALL
}

public final class ConditionMessage {
    public static ConditionMessage empty();
    public static ConditionMessage of(String message, Object... args);
    public ConditionMessage andCondition(String condition, Object... args);
    public ConditionMessage because(String reason, Object... args);
}

public class ConditionOutcome {
    public ConditionOutcome(boolean match, String message);
    public ConditionOutcome(boolean match, ConditionMessage message);
    public boolean isMatch();
    public String getMessage();
}