最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot注解之@EnableAutoConfiguration詳解

 更新時(shí)間:2023年08月04日 10:12:01   作者:小魏的博客  
這篇文章主要介紹了Springboot注解之@EnableAutoConfiguration詳解,@EnableAutoConfiguration是一個(gè)加載Starter目錄包之外的需要Spring自動(dòng)生成bean對象,本文對其進(jìn)行總結(jié),需要的朋友可以參考下

一、@EnableAutoConfiguration的作用

簡單點(diǎn)說就是Spring Boot根據(jù)依賴中的jar包,自動(dòng)選擇實(shí)例化某些配置,配置類必須有@Configuration注解。

說白了,還是實(shí)例化對象,只是實(shí)例化的是依賴包中的類。

另外,我們也可以按照自動(dòng)裝配的規(guī)范自己定義裝配的類。

二、@EnableAutoConfiguration和 @Configuration 的區(qū)別

  • @Configuration:表示作用的類是個(gè)配置類。我們平時(shí)也會(huì)寫配置類,比如我們系統(tǒng)中的DataSourceConfig類,但是由于這個(gè)類是在Starter對應(yīng)的子目錄下,會(huì)自動(dòng)加載,所以@EnableAutoConfiguration就作用不到了。
  • @EnableAutoConfiguration:是一個(gè)加載Starter目錄包之外的需要Spring自動(dòng)生成bean對象(是否需要的依據(jù)是"META-INF/spring.factories"中org.springframework.boot.autoconfigure.EnableAutoConfiguration后面是有能找到那個(gè)bean)的帶有@Configuration注解的類。一般就是對各種引入的spring-boot-starter依賴包指定的(spring.factories)類進(jìn)行實(shí)例化。

整體流程

1、我們啟動(dòng)類中會(huì)加上@SpringBootApplication

2、@SpringBootApplication包含了@EnableAutoConfiguration,告知應(yīng)用啟動(dòng)的時(shí)候需要掃描依賴包中需要實(shí)例化的類

3、Springboot啟動(dòng)的時(shí)候會(huì)去掃描META-INF/spring.factories,查看具體是哪些類需要實(shí)例化

4、掃描哪些需要實(shí)例化的類,看下是否有@Configuration注解,如果有,則實(shí)例化

5、實(shí)例化的時(shí)候可能需要一些配置屬性,一般這些類都會(huì)加上@EnableConfigurationProperties(RocketMQProperties.class)

6、RocketMQProperties會(huì)將屬性映射為bean類

三、@EnableAutoConfiguration案例

1、Kafka自動(dòng)裝配

我們會(huì)發(fā)現(xiàn),當(dāng)我們在application.properties中配置spring.kafka.xxx,就可以在程序中直接使用了,說明Kafka已經(jīng)被實(shí)例化了

問題來了,是什么時(shí)候?qū)嵗模?/p>

其實(shí)就是@EnableAutoConfiguration注解自動(dòng)實(shí)例化的。

實(shí)現(xiàn)類:KafkaAutoConfiguration

代碼簡單解讀如下:

2、JMX自動(dòng)裝配

當(dāng)我們引入Spring Boot Actuator相關(guān)包之后就能自動(dòng)采集到Spring boot應(yīng)用的相關(guān)運(yùn)行指標(biāo)了,怎么做到的?

其實(shí)這些指標(biāo)都是通過JMX標(biāo)準(zhǔn)采集的,而Spring boot的自動(dòng)裝配也包含了JMX,即SpringApplicationAdminJmxAutoConfiguration。

四、spring-boot-starter與@EnableAutoConfiguration的關(guān)系

spring-boot-starter:自動(dòng)導(dǎo)入組件對應(yīng)的maven包,目的主要是簡單開發(fā)人員手動(dòng)去配置maven各種依賴包,不僅麻煩,碰到版本匹配問題還很容易出錯(cuò)。

@EnableAutoConfiguration:需要依賴已經(jīng)加載好的包進(jìn)行bean實(shí)例化。

但不一定需要依賴spring-boot-starter,自動(dòng)手動(dòng)把包加載也可以

五、關(guān)于實(shí)例化

在Jfinal中我們需要通過Plugin的規(guī)范去生成對象到上下文中。

而在Spring boot中,我們可以通過@Configuration以及@Service,@Component等注解生成對象到IOC容器中。

未必所有實(shí)例化都是通過@EnableAutoConfiguration,@Configuration以及@Service,@Component等注解,也可以通過其他方式(說白了怎么加載類的問題,因?yàn)閷?shí)例化最終就是找到類,然后通過反射生成對象而已)。

其他實(shí)例化方式其實(shí)可以從META-INF/spring.factories中看出來,里面不僅有org.springframework.boot.autoconfigure.EnableAutoConfiguration,

還有

  • org.springframework.context.ApplicationContextInitializer(初始化的時(shí)候?qū)嵗?/li>
  • org.springframework.context.ApplicationListener(初始化監(jiān)聽的時(shí)候?qū)嵗?/li>
  • org.springframework.boot.diagnostics.FailureAnalyzer(應(yīng)用啟動(dòng)失敗分析類)

等等。

但是對于這些實(shí)例化方式有個(gè)共同點(diǎn),都需要在META-INF/spring.factories中配置。

六、默認(rèn)自動(dòng)裝配的類

# 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

到此這篇關(guān)于Springboot注解之@EnableAutoConfiguration詳解的文章就介紹到這了,更多相關(guān)@EnableAutoConfiguration注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot校驗(yàn)工具類詳細(xì)代碼示例

    Springboot校驗(yàn)工具類詳細(xì)代碼示例

    這篇文章主要給大家介紹了關(guān)于Springboot校驗(yàn)工具類的相關(guān)資料,工具類里面主要是封裝了一些常用字段驗(yàn)證方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • jdk源碼閱讀Collection詳解

    jdk源碼閱讀Collection詳解

    這篇文章主要介紹了jdk源碼閱讀Collection詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • Java詳解IO流創(chuàng)建讀取與寫入操作

    Java詳解IO流創(chuàng)建讀取與寫入操作

    這篇文章主要介紹了Java IO流,同時(shí)也介紹了流中的一些相關(guān)的內(nèi)容,并且通過大量的案例供大家理解。最后通過一些經(jīng)典的案例幫助大家對前面所學(xué)的知識(shí)做了一個(gè)綜合的應(yīng)用,需要的朋友可以參考一下
    2022-05-05
  • Swagger文檔自動(dòng)生成PDF/HTML/Word解決方案詳細(xì)指南

    Swagger文檔自動(dòng)生成PDF/HTML/Word解決方案詳細(xì)指南

    本指南詳細(xì)介紹了Swagger?YAML/JSON定義、Swagger?UI的使用、Swagger轉(zhuǎn)為Markdown格式以及Markdown轉(zhuǎn)為PDF/HTML/Word的過程,包括工具如Pandoc的運(yùn)用,并提供了一個(gè)Spring?Boot應(yīng)用集成Swagger2和Swagger2Markup的示例,闡述了API文檔的生成流程,感興趣的朋友一起看看吧
    2025-08-08
  • Java內(nèi)存模型JMM深入解析

    Java內(nèi)存模型JMM深入解析

    JMM(Java內(nèi)存模型)規(guī)范了多線程環(huán)境下Java程序中變量的內(nèi)存訪問規(guī)則,解決了可見性、原子性和有序性問題,通過關(guān)鍵字和規(guī)則確保多線程程序的正確性和線程安全性,本文介紹Java內(nèi)存模型JMM的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2025-12-12
  • Java 獲取 jar包以外的資源操作

    Java 獲取 jar包以外的資源操作

    這篇文章主要介紹了Java 獲取 jar包以外的資源操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Spring Boot文件上傳最新解決方案

    Spring Boot文件上傳最新解決方案

    本文給大家分享Spring Boot文件上傳功能的示例代碼,包括單文件上傳示例和多文件上傳,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-07-07
  • Spring AOP里的靜態(tài)代理和動(dòng)態(tài)代理用法詳解

    Spring AOP里的靜態(tài)代理和動(dòng)態(tài)代理用法詳解

    這篇文章主要介紹了 Spring AOP里的靜態(tài)代理和動(dòng)態(tài)代理用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java8在遍歷集合時(shí)刪除元素問題解決

    Java8在遍歷集合時(shí)刪除元素問題解決

    本文主要介紹了Java8在遍歷集合時(shí)刪除元素問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • springboot CommandLineRunner接口實(shí)現(xiàn)自動(dòng)任務(wù)加載功能

    springboot CommandLineRunner接口實(shí)現(xiàn)自動(dòng)任務(wù)加載功能

    這篇文章主要介紹了springboot CommandLineRunner接口實(shí)現(xiàn)自動(dòng)任務(wù)加載功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論

河南省| 乐山市| 安图县| 吴江市| 汝阳县| 靖州| 周至县| 彰化市| 遵义市| 仙桃市| 天镇县| 八宿县| 永州市| 资溪县| 新民市| 沐川县| 女性| 武穴市| 安达市| 涪陵区| 忻州市| 华容县| 金平| 威海市| 拉孜县| 鹿泉市| 林甸县| 安阳市| 沛县| 苏尼特右旗| 弥渡县| 大石桥市| 富源县| 宁强县| 神池县| 天水市| 静乐县| 西盟| 博湖县| 科技| 龙胜|