<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          springboot是如何實現(xiàn)自動配置的?

          共 10314字,需瀏覽 21分鐘

           ·

          2021-01-19 08:55

          點擊上方藍色字體,選擇“標星公眾號”

          優(yōu)質文章,第一時間送達

          ? 作者?|? Clare的Java精進之路

          來源 |? urlify.cn/RRrERv

          76套java從入門到精通實戰(zhàn)課程分享

          1.1.? Spring Boot的自動配置的原理

          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.?? 條件注解

          ?

          ?

          ?

          ?

          ?總結:

          1、通過springboot源碼分析,程序運行時,會讀取spring.factories文件,文件中org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,\指明了redis是自動配置

          2、在RedisAutoConfiguration中可以找到redis的配置類:RedisPropertis,配置類中指明了,會讀取配置文件中的redis連接參數(shù)

          3、這樣一來,springboot框架中的bean容器,就自動創(chuàng)建了redis相關的bean,用來在業(yè)務代碼中調用,而不需要手動進行相關的配置,然后獲取bean




          粉絲福利:Java從入門到入土學習路線圖

          ??????

          ??長按上方微信二維碼?2 秒


          感謝點贊支持下哈?

          瀏覽 52
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  俺去也在线www色官网 | 欧美操屄 | 亚洲国产精品波多野结衣 | 日韩一级欧美 | 草草草在线观看 |