日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot 自動配置原理及源碼解析

瀏覽:110日期:2023-03-02 16:25:32

初始化一個Springboot項目,在主啟動類會有這么一個注解:@SpringBootApplication,自動裝配的秘密全在主啟動類這個注解里面了

點進去一層會發(fā)現(xiàn)有三個子注解組成,分別是 @SpringBootConfiguration、@ComponentScan和@EnableAutoConfiguration

SpringBoot 自動配置原理及源碼解析

接下來分別解釋這三個注解在整個自動裝配過程中的作用

1、@SpringBootConfiguration

點進去發(fā)現(xiàn)它是@Configure,代表當前是一個配置類,意思就是當前這個主啟動類是一個配置類,當然也在Spring容器中,這樣方便啟動的時對其他對象進行管理。

2、@ComponentScan

指定掃描哪些Spring注解

@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })

SpringBoot 自動配置原理及源碼解析

源碼中指定兩種情況下會被排除在外

@Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {// if (this.beanFactory instanceof ListableBeanFactory && getClass() == TypeExcludeFilter.class) { for (TypeExcludeFilter delegate : getDelegates()) {if (delegate.match(metadataReader, metadataReaderFactory)) { return true;} }}return false; }

AutoConfigurationExcludeFilter:用于排除其他同時標記@Configuration和@EnableAutoConfiguration的類

@Override public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {return isConfiguration(metadataReader) && isAutoConfiguration(metadataReader); } private boolean isConfiguration(MetadataReader metadataReader) {return metadataReader.getAnnotationMetadata().isAnnotated(Configuration.class.getName()); } private boolean isAutoConfiguration(MetadataReader metadataReader) {return getAutoConfigurations().contains(metadataReader.getClassMetadata().getClassName()); }

SpringBoot 自動配置原理及源碼解析

3、@EnableAutoConfiguration

所有的重量全部都加在這個注解上面

@AutoConfigurationPackage@Import(AutoConfigurationImportSelector.class)public @interface EnableAutoConfiguration {}

@AutoConfigurationPackage

自動配置包?指定了默認的包規(guī)則

@Import(AutoConfigurationPackages.Registrar.class) //給容器中導入一個組件public @interface AutoConfigurationPackage {}//利用Registrar給容器中導入一系列組件//將指定的一個包下的所有組件導入進來?MainApplication 所在包下。

SpringBoot 自動配置原理及源碼解析@Import(AutoConfigurationImportSelector.class)

1、利用getAutoConfigurationEntry(annotationMetadata);給容器中批量導入一些組件2、調(diào)用List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes)獲取到所有需要導入到容器中的配置類3、利用工廠加載 Map<String, List<String>> loadSpringFactories(@Nullable ClassLoader classLoader);得到所有的組件4、從META-INF/spring.factories位置來加載一個文件。 默認掃描我們當前系統(tǒng)里面所有META-INF/spring.factories位置的文件 spring-boot-autoconfigure-2.3.4.RELEASE.jar包里面也有META-INF/spring.factories

文件里面寫死了spring-boot一啟動就要給容器中加載的所有配置類

spring-boot-autoconfigure-2.3.4.RELEASE.jar/META-INF/spring.factories# Auto Configureorg.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.context.ConfigurationPropertiesAutoConfiguration,org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration,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.ElasticsearchDataAutoConfiguration,org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration,org.springframework.boot.autoconfigure.data.elasticsearch.ReactiveElasticsearchRepositoriesAutoConfiguration,org.springframework.boot.autoconfigure.data.elasticsearch.ReactiveElasticsearchRestClientAutoConfiguration,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.autoconfigure.data.mongo.MongoReactiveRepositoriesAutoConfiguration,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.r2dbc.R2dbcDataAutoConfiguration,org.springframework.boot.autoconfigure.data.r2dbc.R2dbcRepositoriesAutoConfiguration,org.springframework.boot.autoconfigure.data.r2dbc.R2dbcTransactionManagerAutoConfiguration,org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration,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.ElasticsearchRestClientAutoConfiguration,org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration,org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration,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.http.HttpMessageConvertersAutoConfiguration,org.springframework.boot.autoconfigure.http.codec.CodecsAutoConfiguration,org.springframework.boot.autoconfigure.influx.InfluxDbAutoConfiguration,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.jersey.JerseyAutoConfiguration,org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration,org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration,org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration,org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration,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.mongo.embedded.EmbeddedMongoAutoConfiguration,org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,org.springframework.boot.autoconfigure.mongo.MongoReactiveAutoConfiguration,org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration,org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration,org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration,org.springframework.boot.autoconfigure.rsocket.RSocketMessagingAutoConfiguration,org.springframework.boot.autoconfigure.rsocket.RSocketRequesterAutoConfiguration,org.springframework.boot.autoconfigure.rsocket.RSocketServerAutoConfiguration,org.springframework.boot.autoconfigure.rsocket.RSocketStrategiesAutoConfiguration,org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration,org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration,org.springframework.boot.autoconfigure.security.servlet.SecurityFilterAutoConfiguration,org.springframework.boot.autoconfigure.security.reactive.ReactiveSecurityAutoConfiguration,org.springframework.boot.autoconfigure.security.reactive.ReactiveUserDetailsServiceAutoConfiguration,org.springframework.boot.autoconfigure.security.rsocket.RSocketSecurityAutoConfiguration,org.springframework.boot.autoconfigure.security.saml2.Saml2RelyingPartyAutoConfiguration,org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration,org.springframework.boot.autoconfigure.session.SessionAutoConfiguration,org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration,org.springframework.boot.autoconfigure.security.oauth2.client.reactive.ReactiveOAuth2ClientAutoConfiguration,org.springframework.boot.autoconfigure.security.oauth2.resource.servlet.OAuth2ResourceServerAutoConfiguration,org.springframework.boot.autoconfigure.security.oauth2.resource.reactive.ReactiveOAuth2ResourceServerAutoConfiguration,org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration,org.springframework.boot.autoconfigure.task.TaskExecutionAutoConfiguration,org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration,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.client.RestTemplateAutoConfiguration,org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration,org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration,org.springframework.boot.autoconfigure.web.reactive.ReactiveWebServerFactoryAutoConfiguration,org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration,org.springframework.boot.autoconfigure.web.reactive.error.ErrorWebFluxAutoConfiguration,org.springframework.boot.autoconfigure.web.reactive.function.client.ClientHttpConnectorAutoConfiguration,org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration,org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration,org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration,org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration,org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration,org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration,org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration,org.springframework.boot.autoconfigure.websocket.reactive.WebSocketReactiveAutoConfiguration,org.springframework.boot.autoconfigure.websocket.servlet.WebSocketServletAutoConfiguration,org.springframework.boot.autoconfigure.websocket.servlet.WebSocketMessagingAutoConfiguration,org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration,org.springframework.boot.autoconfigure.webservices.client.WebServiceTemplateAutoConfiguration

思考🤔:就這些,說白了就是SpringBoot 在項目啟動的時候封裝了創(chuàng)建對象的方法,無需我們手動配置。

美其名曰自動配置,實則是前人幫我們手動配置好了~

其實SprigBoot有一個條件選擇加載的機制,他并不會把META-INF/spring.factories 目錄下的所有類全部放置到容器中,感興趣的同學可以去詳細看一下,Sprignboot條件加載機制,@Condition系列注解。

以上就是SpringBoot 自動配置原理,翻源碼看一下的詳細內(nèi)容,更多關于SpringBoot 自動配置的資料請關注好吧啦網(wǎng)其它相關文章!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
在线观看视频免费一区二区三区| 日韩avvvv在线播放| 日韩高清成人在线| 日本亚洲不卡| 日韩av中文在线观看| 欧美亚洲一区二区三区| 国产精品伊人| 国产精品成久久久久| 午夜精品成人av| 中文字幕在线看片| 亚洲国内欧美| 综合干狼人综合首页| 欧美亚洲tv| 亚洲国产成人二区| 欧美成人综合| 伊人国产精品| 国产精品chinese| a天堂资源在线| 香蕉国产精品| 四虎成人精品一区二区免费网站| 国产乱人伦精品一区| 成人国产精品一区二区网站| 亚洲天堂久久| 日本在线观看不卡视频| 国产精品九九| 日本精品影院| 中文一区一区三区免费在线观 | 国产99精品| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美伊人影院| 丝袜美腿一区| 日韩精品视频一区二区三区| 国产成人a视频高清在线观看| 午夜精品一区二区三区国产| 国产欧美亚洲精品a| 久久久久久黄| 日韩在线成人| 久久国产欧美| 欧美日本久久| 国精品一区二区三区| 日本少妇精品亚洲第一区| 中文字幕在线官网| 亚洲性视频在线| 四虎国产精品免费观看| 免费在线观看日韩欧美| 粉嫩av一区二区三区四区五区 | 久久精品国产成人一区二区三区| 激情久久中文字幕| 日本不卡视频在线| 欧美va天堂在线| 欧美a级一区二区| 午夜一级久久| 国产中文欧美日韩在线| 亚洲一区二区三区无吗| 欧美一级鲁丝片| 国产视频一区二区在线播放| 伊人久久成人| 精品久久国产一区| 日韩1区2区3区| 欧美日韩激情在线一区二区三区| 国产精品v日韩精品v欧美精品网站 | 日韩大片在线观看| 亚州精品视频| 午夜国产一区二区| 成人亚洲一区| 国产探花一区在线观看| 亚洲综合中文| 狠狠干成人综合网| 日韩高清中文字幕一区二区| 国产精品永久| 综合干狼人综合首页| 黄色亚洲在线| 999视频精品| 国产精品激情电影| 亚洲免费福利一区| 99国产精品| 久久国产影院| 日韩精品1区| 国产精品99一区二区三区| 国产精品一区二区精品视频观看| 久久午夜精品一区二区| 国产一区二区三区自拍| 日韩电影二区| 国产夫妻在线| 日产精品一区二区| 精品72久久久久中文字幕| 国产欧美午夜| 国产日韩一区二区三区在线 | 精品久久久网| 精品一区二区三区免费看| 久久99视频| 久久不见久久见免费视频7| 欧美日本久久| 国产亚洲一区| 欧美一区免费| 国产黄色一区| 久久中文字幕一区二区三区| 美女精品一区二区| 国产精品久久久久久久久久白浆 | 日本va欧美va欧美va精品| 蜜臀av亚洲一区中文字幕| 亚洲少妇自拍| 日本大胆欧美人术艺术动态| 国产色综合网| 91久久黄色| 亚洲经典在线| 亚洲69av| 国产欧美视频在线| 国产成人久久精品麻豆二区 | 日本欧美不卡| 久久国产亚洲| 国产精品日本| 亚洲欧美在线综合| 日本少妇一区二区| 久久伊人久久| а√天堂8资源中文在线| www.九色在线| 91成人超碰| 亚洲欧洲国产精品一区| 国产欧美自拍| 岛国av在线网站| 免费精品国产| 日韩综合小视频| 麻豆视频观看网址久久| 日本高清不卡一区二区三区视频| 伊人久久婷婷| 91成人精品在线| 黄毛片在线观看| 在线视频亚洲| 无码日韩精品一区二区免费| 国产精品成人国产| www在线观看黄色| 2023国产精品久久久精品双| 日韩欧美中文字幕一区二区三区| 麻豆精品在线| 91精品成人| 国产日韩视频| 久久激情网站| 日韩在线观看一区二区三区| 91亚洲国产高清| 免费日韩av| 国产精品v一区二区三区| 激情视频一区二区三区| 日韩av网站在线免费观看| 另类专区亚洲| 人人精品人人爱| 麻豆高清免费国产一区| 国产在线不卡| 久久国内精品视频| 亚洲国产专区| 久久爱www.| 日韩在线卡一卡二| 精品视频一区二区三区在线观看 | 午夜国产精品视频| 国产精品丝袜在线播放| 欧美成人精品| 久久精品 人人爱| 欧美成人日韩| 国产精品成人a在线观看| 亚洲精品福利| 欧美精品资源| 91精品国产自产精品男人的天堂 | 亚洲深夜福利| 国产精品毛片久久| 亚洲一二av| 久久国产影院| 国产96在线亚洲| 亚洲精品日本| 久久国产日本精品| 欧美国产极品| 四虎在线精品| 在线国产一区二区| 麻豆精品久久久| 亚洲2区在线| 欧美日韩国产在线一区| 精品国产a一区二区三区v免费| 麻豆久久精品| 欧美日韩在线观看视频小说| 国产精品美女午夜爽爽| 日韩一区欧美二区| 九九精品调教| 精品久久视频| 欧美在线黄色| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美高清不卡| 香蕉成人av| 国产自产自拍视频在线观看| 国产精品sm| 日韩1区2区日韩1区2区| 亚洲精品日本| 在线精品一区| 免费日韩av片| 在线国产一区| 欧美国产91| 欧美一级精品| 久久久777| 久久精品国产亚洲夜色av网站| 国产精品国产三级国产在线观看| 国产伦精品一区二区三区视频| 亚洲精品三级|