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

Springboot把外部依賴包納入Spring容器管理的兩種方式

 更新時(shí)間:2023年07月30日 09:26:59   作者:凡夫販夫  
這篇文章主要給大家介紹了Springboot把外部依賴包納入Spring容器管理的兩種方式,Spring.factories和org.springframework.boot.autoconfigure.AutoConfiguration.imports,有感興趣的小伙伴可以參考閱讀本文

前言

在Spring boot項(xiàng)目中,凡是標(biāo)記有@Component、@Controller、@Service、@Configuration、@Bean等注解的類,Spring boot都會(huì)在容器啟動(dòng)的時(shí)候,自動(dòng)創(chuàng)建bean并納入到Spring容器中進(jìn)行管理,這樣就可以使用@Autowired等注解,在需要使用bean的業(yè)務(wù)類中進(jìn)行注入。這里起到關(guān)鍵作用的就是@ComponentScan,這是一個(gè)bean掃描注解,默認(rèn)掃描的目錄是啟動(dòng)類所在包下的所有包及子包,也就是說(shuō)凡是標(biāo)記了@Componetn等注解類,Spring boot都會(huì)自動(dòng)創(chuàng)建bean納入Spring容器管理。

問(wèn)題

一個(gè)問(wèn)題來(lái)了,是什么呢?如果我封裝了一套公共的業(yè)務(wù)組件,也想把些組件類放到Spring容器里,方便在業(yè)務(wù)里注入使用,這時(shí)候應(yīng)該怎么辦呢?

解決方法

最先想到的就是,應(yīng)該就是更新@ComponentScan的掃描路徑了吧,除了這個(gè)還有沒(méi)有更好方法呢?答案是有的,且聽(tīng)我細(xì)細(xì)道來(lái)的。

主要是兩種方式:

第一種:Spring.factories

如果了解過(guò)Spring boot的自動(dòng)裝配的原理以及如何自定義自己的starter,對(duì)這個(gè)配置文件應(yīng)該會(huì)很熟悉,Spring boot能夠?qū)崿F(xiàn)開(kāi)箱即用,省去了許多繁瑣的配置,spring-boot-autoconfigure.jar下的/META-INF/spring.factories配置文件起了關(guān)鍵作用。那個(gè)類里有什么呢?仔細(xì)會(huì)發(fā)現(xiàn)spring.factories中配置信息是key-value的形式,key是spring中預(yù)留的擴(kuò)展點(diǎn)配置接口的全限定類名,vlue則是具體的配置類的全限定類名,如果有多個(gè)配置類,則以英文逗號(hào)隔開(kāi);

如果公共的業(yè)務(wù)組件封裝好了,就可以在resources目錄下,創(chuàng)建/META-INF/spring.factories配置文件,并實(shí)現(xiàn)Spring預(yù)留的擴(kuò)展點(diǎn)配置接口,使用的時(shí)候引入到項(xiàng)目中,然后在Spring容器啟動(dòng)的時(shí)候,會(huì)讀取classpath下所有的spring.factories中的配置類,然后納入到Spring容器中。當(dāng)然這個(gè)處理過(guò)程是很復(fù)雜的,這里不過(guò)多展開(kāi),我在網(wǎng)上找到了一張圖,可以幫助你很好的理解整個(gè)過(guò)程,有興趣的小伙們,不妨根據(jù)圖上內(nèi)容,再結(jié)合spring源碼再深入研究一下。

第二種:org.springframework.boot.autoconfigure.AutoConfiguration.imports

其實(shí)org.springframework.boot.autoconfigure.AutoConfiguration.imports文件功能和Sping.factories的作用是一樣的,這個(gè)用法是Spring boot2.7以后出現(xiàn)的,目的也是為引入外部的jar,把外部bean納入到Spring容器,實(shí)現(xiàn)外部組件與Spring的集成,主要的區(qū)別在于引入的方式有些不同,spring.factories這種方式是在resources下創(chuàng)建/META-INF/spring.factories配置文件,內(nèi)部是key-value的形式,這種則是創(chuàng)建/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports,內(nèi)部是具體的要導(dǎo)入到Spring環(huán)境的中的配置類。

兩種方式有一些區(qū)別,不過(guò)都是用來(lái)實(shí)現(xiàn)自動(dòng)裝配的。

到此這篇關(guān)于Springboot把外部依賴包納入Spring容器管理的兩種方式的文章就介紹到這了,更多相關(guān)外部依賴包納入Spring容器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Java實(shí)現(xiàn)JSONArray轉(zhuǎn)Map的三種實(shí)現(xiàn)方式

    詳解Java實(shí)現(xiàn)JSONArray轉(zhuǎn)Map的三種實(shí)現(xiàn)方式

    本文主要介紹了Java實(shí)現(xiàn)JSONArray轉(zhuǎn)Map的三種實(shí)現(xiàn)方式,本文只是自己常用的三種,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • SpringBoot引入Redis報(bào)org.springframework.data.redis.core.RedisTemplate類找不到錯(cuò)誤問(wèn)題

    SpringBoot引入Redis報(bào)org.springframework.data.redis.core.RedisT

    這篇文章主要介紹了SpringBoot引入Redis報(bào)org.springframework.data.redis.core.RedisTemplate類找不到錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • SpringBoot實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換的項(xiàng)目實(shí)踐

    SpringBoot實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換的項(xiàng)目實(shí)踐

    在實(shí)際開(kāi)發(fā)過(guò)程中,我們經(jīng)常遇到需要同時(shí)操作多個(gè)數(shù)據(jù)源的情況,本文主要介紹了SpringBoot實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • SpringBoot的自動(dòng)配置原理解析

    SpringBoot的自動(dòng)配置原理解析

    這篇文章主要介紹了SpringBoot的自動(dòng)配置原理解析,SpringBoot的自動(dòng)配置要從它的啟動(dòng)類@SpringBootApplication說(shuō)起,點(diǎn)進(jìn)注解,@Target設(shè)置當(dāng)前注解可以標(biāo)記在哪,(ElementType.type)表示標(biāo)注在類上面,需要的朋友可以參考下
    2023-08-08
  • 關(guān)于SpringCloudStream配置問(wèn)題

    關(guān)于SpringCloudStream配置問(wèn)題

    這篇文章主要介紹了關(guān)于SpringCloudStream配置問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Socket編程簡(jiǎn)單示例(聊天服務(wù)器)

    Socket編程簡(jiǎn)單示例(聊天服務(wù)器)

    socket編程是在不同的進(jìn)程間進(jìn)行網(wǎng)絡(luò)通訊的一種協(xié)議,下面這篇文章主要給大家介紹了關(guān)于Socket編程簡(jiǎn)單示例的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • Java的SpringMVC中控制器返回XML數(shù)據(jù)問(wèn)題

    Java的SpringMVC中控制器返回XML數(shù)據(jù)問(wèn)題

    這篇文章主要介紹了Java的SpringMVC中控制器返回XML數(shù)據(jù)問(wèn)題,控制器是處理HTTP請(qǐng)求的組件,它們接收來(lái)自客戶端的請(qǐng)求,并將其轉(zhuǎn)換為適當(dāng)?shù)捻憫?yīng),這些響應(yīng)可以是動(dòng)態(tài)生成的?HTML?頁(yè)面,也可以是JSON或XML格式的數(shù)據(jù),需要的朋友可以參考下
    2023-07-07
  • Java實(shí)現(xiàn)添加,讀取和刪除Excel圖片的方法詳解

    Java實(shí)現(xiàn)添加,讀取和刪除Excel圖片的方法詳解

    本文介紹在Java程序中如何添加圖片到excel表格,以及如何讀取、刪除excel表格中已有的圖片。文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • Spring自定義注解實(shí)現(xiàn)接口版本管理

    Spring自定義注解實(shí)現(xiàn)接口版本管理

    這篇文章主要介紹了Spring自定義注解實(shí)現(xiàn)接口版本管理,RequestMappingHandlerMapping類是與 @RequestMapping相關(guān)的,它定義映射的規(guī)則,即滿足怎樣的條件則映射到那個(gè)接口上,需要的朋友可以參考下
    2023-11-11
  • 詳解Mybatis中常用的約束文件

    詳解Mybatis中常用的約束文件

    這篇文章主要介紹了詳解Mybatis中常用的約束文件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論