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

Java深入淺出掌握SpringBoot之MVC自動(dòng)配置原理篇

 更新時(shí)間:2021年10月27日 09:05:26   作者:龍弟-idea  
在進(jìn)行項(xiàng)目編寫前,我們還需要知道一個(gè)東西,就是SpringBoot對(duì)我們的SpringMVC還做了哪些配置,包括如何擴(kuò)展,如何定制,只有把這些都搞清楚了,我們?cè)谥笫褂貌艜?huì)更加得心應(yīng)手

Spring Boot 為 Spring MVC 提供了自動(dòng)配置,適用于大多數(shù)應(yīng)用程序。

官方文檔描述:

自動(dòng)配置在 Spring 的默認(rèn)值之上添加了以下功能:

從官方描述解析:

If you want to keep Spring Boot MVC features and you want to add 
additionalMVC configuration (interceptors, formatters, view controllers, 
and other features), you can add your own 
@Configuration class of type WebMvcConfigurer but without @EnableWebMvc.

擴(kuò)展SpringMVC

由于WebMvcConfigurer是個(gè)接口

創(chuàng)建一個(gè)MyMvcConfig實(shí)現(xiàn)這個(gè)接口

之前我們學(xué)的視圖解析器是我們手動(dòng)配置

ViewResolver 實(shí)現(xiàn)了視圖解析器接口的類,就看做是視圖解析器

搜索ContentNegotiatingViewResolver,找到如下方法resolveViewName!找到對(duì)應(yīng)的視圖解析代碼

從 getCandidateViews中看到它是把所有的視圖解析器拿來,進(jìn)行遍歷循環(huán)

結(jié)論:ContentNegotiatingViewResolver 這個(gè)視圖解析器就是用來組合所有的視圖解析器的

可以看出它是從容器中去找視圖解析器,我們也可以在容器中實(shí)現(xiàn)一個(gè)視圖解析器!

容器中實(shí)現(xiàn)一個(gè)視圖解析器

1、我們?cè)谥鞒绦蛑腥懸粋€(gè)視圖解析器;

2、如何看我們自己寫的視圖解析器是否起了作用呢?

我們給 DispatcherServlet 中的 doDispatch方法 加個(gè)斷點(diǎn)進(jìn)行調(diào)試一下,因?yàn)樗械恼?qǐng)求都會(huì)走到這個(gè)方法中!

3、我們啟動(dòng)我們的項(xiàng)目,然后隨便訪問一個(gè)頁(yè)面,看一下Debug信息,找到this

4、找到視圖解析器,我們看到我們自己定義的就在這里了;

所以說,我們?nèi)绻胍褂胐iy定制的東西,我們只需要給容器中添加這個(gè)組件就好了,SpringBoot就會(huì)幫我們自動(dòng)裝配!

轉(zhuǎn)換器和格式化器

找到格式化轉(zhuǎn)換器:

點(diǎn)進(jìn)去可以看到

如果配置了自己的格式化方式,就會(huì)注冊(cè)到Bean中生效,我們可以在配置文件中配置日期格式化的規(guī)則:可以看到在我們的Properties文件中,我們可以進(jìn)行自動(dòng)配置它!

修改SpringBoot的默認(rèn)配置

結(jié)論:我們要擴(kuò)展SpringMVC,官方就推薦我們這么去使用,既保SpringBoot留所有的自動(dòng)配置,也能用我們擴(kuò)展的配置!

分析一下原理:

1、WebMvcAutoConfiguration 是 SpringMVC的自動(dòng)配置類,里面有一個(gè)類WebMvcAutoConfigurationAdapter

2、這個(gè)類上有一個(gè)注解,在做其他自動(dòng)配置時(shí)會(huì)導(dǎo)入:@Import(EnableWebMvcConfiguration.class)

3、我們點(diǎn)進(jìn)EnableWebMvcConfiguration這個(gè)類看一下,它繼承了一個(gè)父類:DelegatingWebMvcConfiguration

這個(gè)父類中有這樣一段代碼:

4、我們可以在這個(gè)類中去尋找一個(gè)我們剛才設(shè)置的viewController當(dāng)做參考,發(fā)現(xiàn)它調(diào)用了一個(gè)

 
protected void addViewControllers(ViewControllerRegistry registry) {
    this.configurers.addViewControllers(registry);
}

5、我們點(diǎn)進(jìn)去看一下

 
public void addViewControllers(ViewControllerRegistry registry) {
    Iterator var2 = this.delegates.iterator();
 
    while(var2.hasNext()) {
        // 將所有的WebMvcConfigurer相關(guān)配置來一起調(diào)用!包括我們自己配置的和Spring給我們配置的
        WebMvcConfigurer delegate = (WebMvcConfigurer)var2.next();
        delegate.addViewControllers(registry);
    }
 
}

結(jié)論:所有的WebMvcConfiguration都會(huì)被作用,不止Spring自己的配置類,我們自己的配置類當(dāng)然也會(huì)被調(diào)用

全面接管SpringMVC

全面接管即:SpringBoot對(duì)SpringMVC的自動(dòng)配置不需要了,所有都是我們自己去配置!

只需在我們的配置類中要加一個(gè)@EnableWebMvc。

我們開發(fā)中,不推薦使用全面接管SpringMVC

1、這里看到它是導(dǎo)入了一個(gè)類,繼續(xù)點(diǎn)進(jìn)去看

2、它繼承了一個(gè)父類 WebMvcConfigurationSupport

3、回顧一下Webmvc自動(dòng)配置類

總結(jié):@EnableWebMvc將WebMvcConfigurationSupport組件導(dǎo)入進(jìn)來;

而導(dǎo)入的WebMvcConfigurationSupport只是SpringMVC最基本的功能!

到此這篇關(guān)于Java深入淺出掌握SpringBoot之MVC自動(dòng)配置原理篇的文章就介紹到這了,更多相關(guān)Java SpringBoot MVC自動(dòng)配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Nacos配置的多文件加載與共享配置方式

    Nacos配置的多文件加載與共享配置方式

    這篇文章主要介紹了Nacos配置的多文件加載與共享配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 詳解Java使用雙異步后如何保證數(shù)據(jù)一致性

    詳解Java使用雙異步后如何保證數(shù)據(jù)一致性

    這篇文章主要為大家詳細(xì)介紹了Java使用雙異步后如何保證數(shù)據(jù)一致性,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以了解下
    2024-01-01
  • Java AQS中CyclicBarrier回環(huán)柵欄的使用

    Java AQS中CyclicBarrier回環(huán)柵欄的使用

    這篇文章主要介紹了Java中的 CyclicBarrier詳解,CyclicBarrier沒有顯示繼承哪個(gè)父類或者實(shí)現(xiàn)哪個(gè)父接口, 所有AQS和重入鎖不是通過繼承實(shí)現(xiàn)的,而是通過組合實(shí)現(xiàn)的,下文相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2023-02-02
  • Java16新特性record類使用細(xì)節(jié)示例詳解

    Java16新特性record類使用細(xì)節(jié)示例詳解

    這篇文章主要為大家介紹了Java16新特性record類使用細(xì)節(jié)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Spring?AOP實(shí)現(xiàn)多數(shù)據(jù)源動(dòng)態(tài)切換

    Spring?AOP實(shí)現(xiàn)多數(shù)據(jù)源動(dòng)態(tài)切換

    本文主要介紹了Spring?AOP實(shí)現(xiàn)多數(shù)據(jù)源動(dòng)態(tài)切換,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Java中的關(guān)鍵字_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java中的關(guān)鍵字_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    關(guān)鍵字也稱為保留字,是指Java語(yǔ)言中規(guī)定了特定含義的標(biāo)示符。對(duì)于保留字,用戶只能按照系統(tǒng)規(guī)定的方式使用,不能自行定義
    2017-04-04
  • java加密枝術(shù)深入理解

    java加密枝術(shù)深入理解

    java.security包中的MessageDigest類提供了計(jì)算消息摘要的方法,本文將詳細(xì)介紹,需要了解的朋友可以參考下
    2012-11-11
  • eclipse啟動(dòng)出現(xiàn)“failed to load the jni shared library”問題解決

    eclipse啟動(dòng)出現(xiàn)“failed to load the jni shared library”問題解決

    這篇文章主要介紹了eclipse啟動(dòng)出現(xiàn)“failed to load the jni shared library”問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • springboot自動(dòng)裝配TypeNotPresentExceptionProxy異常排查解決

    springboot自動(dòng)裝配TypeNotPresentExceptionProxy異常排查解決

    這篇文章主要為大家介紹了springboot自動(dòng)裝配TypeNotPresentExceptionProxy異常排查解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • SpringBoot jackson 精度處理問題解決

    SpringBoot jackson 精度處理問題解決

    由于JavaScript處理的最大數(shù)值限制,較大的雪花ID在JS中容易溢出,為解決此問題,可在SpringMVC或SpringBoot中使用@RequestBody注解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10

最新評(píng)論

桃园县| 阿图什市| 岗巴县| 渑池县| 武山县| 康乐县| 扶余县| 体育| 当涂县| 永寿县| 山阳县| 黄陵县| 巫溪县| 灵璧县| 乌拉特前旗| 高陵县| 出国| 镇平县| 婺源县| 南昌市| 邯郸县| 泾川县| 遂平县| 静宁县| 木里| 伊金霍洛旗| 邵武市| 香港| 怀柔区| 庆安县| 盱眙县| 康乐县| 宿松县| 曲麻莱县| 陇南市| 广汉市| 株洲市| 鄂尔多斯市| 大港区| 双鸭山市| 余庆县|