关于SpringBoot自动配置的笔记

本文详细解析了Spring Boot的自动配置原理,从@EnableAutoConfiguration的启用到AutoConfigurationImportSelector的选择过程,再到SpringFactoriesLoader加载自动配置类。通过HttpEncodingAutoConfiguration举例,说明配置类如何根据条件生效,并向容器添加组件,以及组件属性如何与配置文件关联。核心思想在于,Spring Boot启动时加载大量自动配置类,开发者可通过检查已有配置并定制配置文件来简化应用设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自动配置原理


官方文档:https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/common-application-properties.html

  1. Spring Boot启动的时候,加载了主配置类,开启了自动配置功能 **@EnableAutoConfiguration **
    自动配置注解

  2. EnableAutoConfiguration作用:

    1. 利用AutoConfigurationImportSelector给容器中导入一些组件

      导入的组件具体可以参考org.springframework.boot.autoconfigure.AutoConfigurationImportSelector#selectImports

      selectImports调用了

      • AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader) 载入元数据
      • getAutoConfigurationEntry(autoConfigurationMetadata,annotationMetadata)获取候选的配置

​ getAutoConfigurationEntry中调用了

在这里插入图片描述

​ getCandidateConfigurations中调用了在这里插入图片描述

​ SpringFactoriesLoader.loadFactoryName去加载了

public static final String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories";

​ 这个文件中有很多自动配置的类,如下(来自spring-boot-autoconfigure包中的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.CloudServiceConnectorsAutoConfiguration,\
org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\
org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration,\
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration,\
org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration,\
org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration,\
org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.couchbase.CouchbaseReactiveDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.couchbase.CouchbaseReactiveRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration,\
org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.jdbc.JdbcRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.ldap.LdapRepositoriesAutoConfiguration,\
org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration,\
org.springframework.boot.autoconfigure.data.mongo.MongoReactiveDataAutoConfiguration,\
org.springframework.boot.aut
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值