Spring Boot 的自动配置注解是@EnableAutoConfiguration
从上面的@import的类可以找到下面自动加载自动配置的映射。
这个方法会加载类路径及所以jar包下meta-INF/spring.factories配置中映射的自动配置的类。
public static final String FACTORIES_RESOURCE_LOCATION = "meta-INF/spring.factories";
查看Springboot自带的自动配置的包:
spring-boot-autoconfigure-1.5.6RELEAS.jar
打开其中的meta-INF/spring.factories文件会找到自动配置的映射
#Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration= org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration, org.springframework.boot.autoconfigure.aop.AopAutoConfiguration, org.springframework.boot.autoconfigure.amqp .RabbitAutoConfiguration, org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration, org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration, org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration, org.springframework.boot.autoconfigure.cloud.CloudAutoConfiguration,
再来看看数据源自动配置的实现注解
@Configuration
@ConditionalOnClass({ DataSource.class,EmbeddedDatabaseType.class })
@EnableConfigurationProperties ( DataSourceProperties.class )
@import({ Registrar.class,DataSourcePoolmetadataProvidersConfiguration.class })
public class DataSourceAutoConfiguration {
@Configuration @ConditionalOnClass就是自动配置的核心,首先它得是一个配置文件,其次根据类路径下是否有这个类去自动配置。



