Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入到Spring容器。

1.1.1.   Maven下载源码

通过 dependency:sources 该命令可以下载该项目中所有的依赖的包的源码。

1.1.2.   源码分析

org.springframework.boot.SpringApplication:

org.springframework.core.io.support.SpringFactoriesLoader:

由此可见,读取该配置文件来加载内容。

1.1.3.   Spring.factories文件

 # Initializers

 org.springframework.context.ApplicationContextInitializer=\

 org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer,\

 org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer

 # Application Listeners

 org.springframework.context.ApplicationListener=\

 org.springframework.boot.autoconfigure.BackgroundPreinitializer

 # Auto Configuration Import Listeners

 org.springframework.boot.autoconfigure.AutoConfigurationImportListener=\

 org.springframework.boot.autoconfigure.condition.ConditionEvaluationReportAutoConfigurationImportListener

 # Auto Configuration Import Filters

 org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\

 org.springframework.boot.autoconfigure.condition.OnClassCondition

 # 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,\

 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.CassandraRepositoriesAutoConfiguration,\

 org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration,\

 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.jpa.JpaRepositoriesAutoConfiguration,\

 org.springframework.boot.autoconfigure.data.ldap.LdapDataAutoConfiguration,\

 org.springframework.boot.autoconfigure.data.ldap.LdapRepositoriesAutoConfiguration,\

 org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration,\

 org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration,\

 org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration,\

 org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration,\

 org.springframework.boot.autoconfigure.data.solr.SolrRepositoriesAutoConfiguration,\

 org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,\

 org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration,\

 org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration,\

 org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration,\

 org.springframework.boot.autoconfigure.elasticsearch.jest.JestAutoConfiguration,\

 org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration,\

 org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,\

 org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration,\

 org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration,\

 org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration,\

 org.springframework.boot.autoconfigure.hazelcast.HazelcastJpaDependencyAutoConfiguration,\

 org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration,\

 org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration,\

 org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration,\

 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\

 org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\

 org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration,\

 org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration,\

 org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\

 org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration,\

 org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\

 org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration,\

 org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration,\

 org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration,\

 org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\

 org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration,\

 org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration,\

 org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration,\

 org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration,\

 org.springframework.boot.autoconfigure.ldap.embedded.EmbeddedLdapAutoConfiguration,\

 org.springframework.boot.autoconfigure.ldap.LdapAutoConfiguration,\

 org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\

 org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration,\

 org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration,\

 org.springframework.boot.autoconfigure.mobile.DeviceResolverAutoConfiguration,\

 org.springframework.boot.autoconfigure.mobile.DeviceDelegatingViewResolverAutoConfiguration,\

 org.springframework.boot.autoconfigure.mobile.SitePreferenceAutoConfiguration,\

 org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration,\

 org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\

 org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration,\

 org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,\

 org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration,\

 org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration,\

 org.springframework.boot.autoconfigure.security.SecurityFilterAutoConfiguration,\

 org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration,\

 org.springframework.boot.autoconfigure.security.oauth2.OAuth2AutoConfiguration,\

 org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration,\

 org.springframework.boot.autoconfigure.session.SessionAutoConfiguration,\

 org.springframework.boot.autoconfigure.social.SocialWebAutoConfiguration,\

 org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration,\

 org.springframework.boot.autoconfigure.social.LinkedInAutoConfiguration,\

 org.springframework.boot.autoconfigure.social.TwitterAutoConfiguration,\

 org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration,\

 org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration,\

 org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration,\

 org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration,\

 org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration,\

 org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration,\

 org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration,\

 org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration,\

 org.springframework.boot.autoconfigure.web.HttpEncodingAutoConfiguration,\

 org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration,\

 org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration,\

 org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration,\

 org.springframework.boot.autoconfigure.web.WebClientAutoConfiguration,\

 org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration,\

 org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration,\

 org.springframework.boot.autoconfigure.websocket.WebSocketMessagingAutoConfiguration,\

 org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration

 # Failure analyzers

 org.springframework.boot.diagnostics.FailureAnalyzer=\

 org.springframework.boot.autoconfigure.diagnostics.analyzer.NoSuchBeanDefinitionFailureAnalyzer,\

 org.springframework.boot.autoconfigure.jdbc.DataSourceBeanCreationFailureAnalyzer,\

 org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer

 # Template availability providers

 org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider=\

 org.springframework.boot.autoconfigure.freemarker.FreeMarkerTemplateAvailabilityProvider,\

 org.springframework.boot.autoconfigure.mustache.MustacheTemplateAvailabilityProvider,\

 org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAvailabilityProvider,\

 org.springframework.boot.autoconfigure.thymeleaf.ThymeleafTemplateAvailabilityProvider,\

 org.springframework.boot.autoconfigure.web.JspTemplateAvailabilityProvider

1.1.4.   举例:Redis的自动配置

从上述的配置中可以看出,org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration是Redis的自动配置。

内容:

1.1.5.   条件注解

Spring Boot的自动配置的原理的更多相关文章

  1. Spring Boot的自动配置的原理浅析

    一.原理描述 Spring Boot在进行SpringApplication对象实例化时会加载META-INF/spring.factories文件,将该配置文件中的配置载入到Spring容器. 二. ...

  2. Spring boot 的自动配置

    Xml 配置文件 日志 Spring Boot对各种日志框架都做了支持,我们可以通过配置来修改默认的日志的配置: #设置日志级别 logging.level.org.springframework=D ...

  3. Spring Boot的自动配置原理及启动流程源码分析

    概述 Spring Boot 应用目前应该是 Java 中用得最多的框架了吧.其中 Spring Boot 最具特点之一就是自动配置,基于Spring Boot 的自动配置,我们可以很快集成某个模块, ...

  4. 了解Spring Boot的自动配置

    摘自:https://www.jianshu.com/p/ddb6e32e3faf Spring Boot的自动配置给开发者带来了很大的便利,当开发人员在pom文件中添加starter依赖后,mave ...

  5. Spring Boot的自动配置

    Spring Boot的自动配置 --摘自https://www.hollischuang.com/archives/1791 随着Ruby.Groovy等动态语言的流行,相比较之下Java的开发显得 ...

  6. 初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置

    在上篇博客初识Spring Boot框架中我们初步见识了SpringBoot的方便之处,很多小伙伴可能也会好奇这个Spring Boot是怎么实现自动配置的,那么今天我就带小伙伴我们自己来实现一个简单 ...

  7. spring boot 系列之六:深入理解spring boot的自动配置

    我们知道,spring boot自动配置功能可以根据不同情况来决定spring配置应该用哪个,不应该用哪个,举个例子: Spring的JdbcTemplate是不是在Classpath里面?如果是,并 ...

  8. Spring Boot 排除自动配置的 4 种方法,关键时刻很有用!

    Spring Boot 提供的自动配置非常强大,某些情况下,自动配置的功能可能不符合我们的需求,需要我们自定义配置,这个时候就需要排除/禁用 Spring Boot 某些类的自动化配置了. 比如:数据 ...

  9. 自定义spring boot的自动配置

    文章目录 添加Maven依赖 创建自定义 Auto-Configuration 添加Class Conditions 添加 bean Conditions Property Conditions Re ...

随机推荐

  1. django cookie 提供的功能 参数

    # 用户发来数据带来所有COOKIES 这个cookie是字典 request.COOKIES # 获取字典 获取cookierequest.COOKIES["username111&quo ...

  2. CS224n(一)

    个人博客地址: https://yifdu.github.io/2018/10/30/CS224n%E7%AC%94%E8%AE%B0%EF%BC%88%E4%B8%80%EF%BC%89/#more

  3. J.U.C Atomic(二)基本类型原子操作

    java.util.concurrent.atomic包中对基本类型进行原子操作的类有:AtomicInteger.AtomicBoolean.AtomicLong. 下面通过一个测试程序来验证一下A ...

  4. 判断是否关注了微信公众号 subscribe 0=未关注 1=已关注

    $appid=''; $secret=''; //微信网页授权获取openid $web_url='http://www.xxxx.com/shouquan.php'; if (!isset($_GE ...

  5. vim中快速定位到某行以及快捷删除多行

    vim filename 在命令行中直接输入 numberG 比如 100G直接定位到100行 输入 :set number即显示行号 : i,.d删除从第i行到目前所在行内容

  6. js的同步异步

    由于js没有多线程,所以处理多任务的时候,可以用异步回调来解决.js中setTimeout.setInterval.ajax(jq中可以选择同步或异步)均会开启异步.遇到异步模块,会将其推入值任务队列 ...

  7. tensorflowxun训练自己的数据集之从tfrecords读取数据

    当训练数据量较小时,采用直接读取文件的方式,当训练数据量非常大时,直接读取文件的方式太耗内存,这时应采用高效的读取方法,读取tfrecords文件,这其实是一种二进制文件.tensorflow为其内置 ...

  8. 微信公众平台Java版极速SDK

    JEEWX-API 是第一个微信公众平台Java版极速SDK,基于 jeewx-api 开发可以立即拥有简单易用的API,让开发更加轻松自如,节省更多时间 http://www.jeewx.com/

  9. zookeeper 监听事件 CuratorWatcher

    zookeeper 监听事件 CuratorWatcher CuratorWatcher一次注册只监听一次,不监听查询. 1.监听测试类 package com.qy.learn.zk.curator ...

  10. CSS Text(文本)

    CSS Text(文本) 一.文本颜色 color 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - 如: #FF0000 一个RGB值 - 如: RGB(255,0,0 ...