亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么從Spring的幾個階段理解其工作過程

發布時間:2021-12-02 15:24:37 來源:億速云 閱讀:145 作者:柒染 欄目:大數據

這篇文章給大家介紹怎么從Spring的幾個階段理解其工作過程,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Spring框架非常強大,想要徹底弄懂Spring是非常困難的。

為了便于了解Spring的工作原理,我們來研究一下,Spring是怎么加載的,Spring會經過幾個階段。

我們站在Javaweb的角度將Spring分為若干階段進行分析,以便加深我們對Spring的理解。

Spring的運行大致分可以為三個階段:配置階段、初始化階段和運行時階段。


我們通過下圖來了解下Spring的幾個階段。

怎么從Spring的幾個階段理解其工作過程

配置階段

這里我們以JavaWeb項目為例,當你創建一個Spring項目后,假如你要啟動這個項目,你首先要做什么?肯定是要先配置。

我們首先會找到web.xml文件,在web.xml里引入Spring容器、請求分發器的配置,因為web.xml是整個web項目的入口。

<listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param>    <param-name>contextConfigLocation</param-name>    <param-value>classpath:spring.xml,classpath:spring-mybatis.xml        </param-value></context-param>
<servlet>    <servlet-name>SpringMVC</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <init-param>      <param-name>contextConfigLocation</param-name>      <param-value>classpath:spring-mvc.xml</param-value>    </init-param>    <load-on-startup>1</load-on-startup>    <async-supported>true</async-supported>  </servlet><servlet-mapping>    <servlet-name>SpringMVC</servlet-name>    <url-pattern>/</url-pattern></servlet-mapping>

初始化階段

夜未央,流星落,情已殤


配置完畢后,啟動項目時,由web容器自動調用servlet的初始化方法。ContextLoaderListener會從指定的配置文件讀取配置信息,將所需要加載的bean初始化并加載到Spring IOC容器,并針對引入@Autowrited注解或通過配置文件聲明依賴關系的的bean進行依賴注入和自動裝配。然后會初始化HandlerMapping,將帶有@Controller注解的bean通過ResultMapping注解的value與方法名綁定,進行URL映射。

@Controller@RequestMapping("/info")public class InfoController {    /**     * 按信息類型查找公共信息     * @param infoType 信息類型     * @return     */    @RequestMapping("findInfoByType")    @ResponseBody    public Map<String, Object> selectByInfoType(String infoType){      //...       return result;    }}

舉個例子:

我們看上面這個Controller類,首先類上加了@Controller注解,和@ResultMapping("/info")注解。selectByInfoType()方法上有@ResultMapping("/findInfoByType")注解。

所以當Spring初始化時,注解掃描器就會掃描到該類(使用注解方式的情況下),發現該類有@ResultMapping("/info")注解,然后掃描該類下所有帶有@ResultMapping()注解的方法。如下代碼,selectByInfoType()方法將會被映射到HandlerMapping

handlerMapping.put("/info/findInfoByType","InfoController.selectByInfoType(String infoType)");

運行時階段

處理URL請求,通過DispatchServlet分發器,從HandlerMapping找到對應的類的方法,并使用反射機制將用戶的請求分發到對應的Controller的對應方法進行處理,然后將處理結果返回給用戶。

String method = handlerMapping.get("/info/findInfoByType");//找到對應方法后,利用反射機制調用方法

這里通過圖解方式幫助理解Spring的運行原理,只是粗略的進行分析,實際的執行過程比這復雜的多的多。有興趣的同學可以閱讀源碼或查閱資料了解更多。

關于怎么從Spring的幾個階段理解其工作過程就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辉南县| 自治县| 重庆市| 靖宇县| 吉安县| 赤壁市| 原阳县| 台州市| 准格尔旗| 工布江达县| 民勤县| 琼海市| 绥芬河市| 湾仔区| 邹平县| 图木舒克市| 惠州市| 亚东县| 广灵县| 广丰县| 盐源县| 筠连县| 申扎县| 弥勒县| 顺义区| 丰台区| 南开区| 吴旗县| 怀化市| 平果县| 辉南县| SHOW| 福泉市| 平远县| 锡林浩特市| 太和县| 浮梁县| 九龙城区| 攀枝花市| 霍州市| 简阳市|