Spring Boot 的自动配置是其最核心的特性之一,它通过智能化的默认配置极大简化了 Spring 应用的初始化过程。下面我将深入解析自动配置的工作原理,并演示如何创建自定义的自动配置。
一、自动配置核心机制
1. 条件化装配系统
Spring Boot 的自动配置建立在 Spring 4.0 引入的 @Conditional
注解基础上,扩展出了一系列条件注解:
条件注解 | 作用时机 | 示例 |
---|---|---|
@ConditionalOnClass |
类路径存在指定类时生效 | @ConditionalOnClass(DataSource.class) |
@ConditionalOnMissingBean |
容器中不存在指定 Bean 时生效 | @ConditionalOnMissingBean(DataSource.class) |
@ConditionalOnProperty |
配置属性满足条件时生效 | @ConditionalOnProperty(name="app.feature.enabled", havingValue="true") |
@ConditionalOnWebApplication |
是 Web 应用时生效 | @ConditionalOnWebApplication(type=Type.SERVLET) |
@ConditionalOnResource |
资源文件存在时生效 | @ConditionalOnResource(resources="classpath:default.properties") |