SpringBoot原始碼 Rest的執行流程

2021-09-25 12:05:49 字數 1730 閱讀 5491

在springwebmvc中對rest提供了很好的支援,下面就一步一步的debug來看看springwebmvc原始碼。

下面是乙個執行流程圖,接下來對這張圖進行驗證

編寫啟動類和controller

package com.wrial.art6_rest.bootstrap;

/* * @author wrial

* @date created in 22:11 2019/7/22

* @description 啟動類

進入gethandleradapter方法中,可以看到它還是根據for迴圈進行匹配,可以看見下面有三個adapter

通過support方法來判斷是否支援當前的handlemethod

下面是support原始碼,它根據handler和handlermethod進行比較是不是同乙個物件,supportsinternal永遠返回true

然後發現support成立,就將此返回,然後一直單步執行,發現到了handleinternal方法,就給checkrequest打個斷點

,發現請求的資訊基本在這個斷點處就差不多清晰明了了

它會對這個呼叫進行檢查,檢查完畢就返回到我們的方法進行下一步操作,也就是根據方法的內容進行渲染(因為我這裡沒有加引數因此就直接返回了,如果有引數的話需要進行引數解析,最後才能返回)

可以看到,下一步就是視**析的過程了(看到這裡我發現乙個問題,我的art5專案裡面才配置了internalresourceviewresolver優先,發現是專案除錯錯了,但是還好的是art5專案中也有hello這個對映,其實結果都是一樣的,只是最後視**析的策略順序不同而已)

根據優先順序來進行檢視匹配,和前面的對映方式是一樣的,然後根據視**析器進行解析和渲染,它會在視**析的使用會根據@responsebody註解來判斷是不是需要返回乙個檢視頁,如果需要返回檢視頁的話就解析並定位到指定檢視,並渲染,如果不是的話,會根據序列化器將這些內容根據序列化規則序列化並進行輸出。

雖然這個例子裡面沒有引數,但是過程都是一樣的

springboot原始碼略讀

springboot的精髓是自動依賴注入。那麼哪些能自動注入呢,開啟spring boot autoconfigure,jar下的spring.factories。可以看到一堆這樣的配置 auto configure org.springframework.boot.autoconfigure.en...

SpringBoot原始碼分析

public class 第乙個引數 resourceloader 資源載入器 第二個引數 primarysources 載入的主要資源類 suppresswarnings public resourceloader resourceloader,class primarysources deduc...

Spring Boot 原始碼分析

1 專案初始化過程 springboot啟動類 springboot的啟動很簡單,如下 public static void main string args this.resourceloader resourceloader initialize sources private void ini...