欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Springboot注解之@EnableAutoConfiguration詳解

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

一、@EnableAutoConfiguration的作用

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

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

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

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

  • @Configuration:表示作用的類是個(gè)配置類。我們平時(shí)也會(huì)寫配置類,比如我們系統(tǒng)中的DataSourceConfig類,但是由于這個(gè)類是在Starter對(duì)應(yīng)的子目錄下,會(huì)自動(dòng)加載,所以@EnableAutoConfiguration就作用不到了。
  • @EnableAutoConfiguration:是一個(gè)加載Starter目錄包之外的需要Spring自動(dòng)生成bean對(duì)象(是否需要的依據(jù)是"META-INF/spring.factories"中org.springframework.boot.autoconfigure.EnableAutoConfiguration后面是有能找到那個(gè)bean)的帶有@Configuration注解的類。一般就是對(duì)各種引入的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)我們?cè)赼pplication.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)入組件對(duì)應(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ī)范去生成對(duì)象到上下文中。

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

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

其他實(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)失敗分析類)

等等。

但是對(duì)于這些實(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java基礎(chǔ)教程之繼承詳解

    Java基礎(chǔ)教程之繼承詳解

    這篇文章主要介紹了Java基礎(chǔ)教程之繼承詳解,繼承是除組合(composition)之外,提高代碼重復(fù)可用性(reusibility)的另一種重要方式,本文對(duì)繼承做了詳細(xì)講解,需要的朋友可以參考下
    2014-08-08
  • JavaFX Application應(yīng)用實(shí)例

    JavaFX Application應(yīng)用實(shí)例

    下面小編就為大家?guī)硪黄狫avaFX Application應(yīng)用實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • SpringBoot 創(chuàng)建對(duì)象常見的幾種方式小結(jié)

    SpringBoot 創(chuàng)建對(duì)象常見的幾種方式小結(jié)

    Spring Boot中創(chuàng)建對(duì)象的幾種常見方式包括使用@Component、@Service、@Repository或@Controller注解,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2024-11-11
  • SpringSecurity-2.7中跨域問題解析

    SpringSecurity-2.7中跨域問題解析

    這篇文章主要介紹了SpringSecurity-2.7中跨域問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • SpringBoot創(chuàng)建監(jiān)聽器的方法示例

    SpringBoot創(chuàng)建監(jiān)聽器的方法示例

    在Java中,監(jiān)聽器(Listener)是一種設(shè)計(jì)模式,它允許對(duì)象在 特定事件 發(fā)生時(shí) 自動(dòng)執(zhí)行某些操作,這種設(shè)計(jì)模式通常用于實(shí)現(xiàn) 發(fā)布-訂閱模型,本文給大家介紹了SpringBoot創(chuàng)建監(jiān)聽器的方法示例,感興趣的通過可以參考一下
    2024-04-04
  • Java漢字轉(zhuǎn)拼音pinyin4j用法詳解

    Java漢字轉(zhuǎn)拼音pinyin4j用法詳解

    這篇文章主要介紹了Java漢字轉(zhuǎn)拼音pinyin4j用法詳解,需要的朋友可以參考下
    2020-02-02
  • mybatis整合spring實(shí)現(xiàn)開啟mapper.xml映射文件掃描

    mybatis整合spring實(shí)現(xiàn)開啟mapper.xml映射文件掃描

    這篇文章主要介紹了mybatis整合spring實(shí)現(xiàn)開啟mapper.xml映射文件掃描,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 字符編碼的處理和BeanUtils組件使用詳解

    字符編碼的處理和BeanUtils組件使用詳解

    這篇文章主要為大家介紹了字符編碼的處理和BeanUtils組件的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • springboot循環(huán)依賴問題案例代碼及解決辦法

    springboot循環(huán)依賴問題案例代碼及解決辦法

    在 Spring Boot 中,如果兩個(gè)或多個(gè) Bean之間存在循環(huán)依賴(即 Bean A 依賴 Bean B,而 Bean B 又依賴 Bean A),會(huì)導(dǎo)致 Spring 的依賴注入機(jī)制無法正確處理,從而拋出異常,下面給大家介紹springboot循環(huán)依賴問題及其解決辦法,感興趣的朋友一起看看吧
    2025-04-04
  • springboot項(xiàng)目獲取請(qǐng)求頭當(dāng)中的token的方法

    springboot項(xiàng)目獲取請(qǐng)求頭當(dāng)中的token的方法

    本文主要介紹了springboot項(xiàng)目獲取請(qǐng)求頭當(dāng)中的token的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11

最新評(píng)論