導航:首頁 > 編程語言 > java用異常控制流程圖

java用異常控制流程圖

發布時間:2025-04-16 03:42:38

1. 怎樣繪制java虛擬機

Java 代碼編譯是由 Java 源碼編譯器來完成,流程圖如下所示:


1)Bootstrap ClassLoader

負責載入$JAVA_HOME中jre/lib/rt.jar里所有的 class,由 C++ 實現,不是 ClassLoader 子類。

2)Extension ClassLoader

負責載入Java平台中擴展功能的一些 jar 包,包括$JAVA_HOME中jre/lib/ext/*.jar或-Djava.ext.dirs指定目錄下的 jar 包。

3)App ClassLoader

負責記載 classpath 中指定的 jar 包及目錄中 class。

4)Custom ClassLoader

屬於應用程序根據自身需要自定義的 ClassLoader,如 Tomcat、jboss 都會根據 J2EE 規范自行實現 ClassLoader。

載入過程中會先檢查類是否被已載入,檢查順序是自底向上,從 Custom ClassLoader 到 BootStrap ClassLoader 逐層檢查,只要某個 Classloader 已載入就視為已載入此類,保證此類只所有 ClassLoader載入一次。而載入的順序是自頂向下,也就是由上層來逐層嘗試載入此類。

類執行機制

JVM 是基於棧的體系結構來執行 class 位元組碼的。線程創建後,都會產生程序計數器(PC)和棧(Stack),程序計數器存放下一條要執行的指令在方法內的偏移量,棧中存放一個個棧幀,每個棧幀對應著每個方法的每次調用,而棧幀又是有局部變數區和操作數棧兩部分組成,局部變數區用於存放方法中的局部變數和參數,操作數棧中用於存放方法執行過程中產生的中間結果。棧的結構如下圖所示:

2. java 急求SpringMVC的工作原理的解釋和它的流程圖

Spring工作流程描述

1. 用戶向伺服器發送請求,請求被Spring 前端控制Servelt DispatcherServlet捕獲;

2.DispatcherServlet對請求URL進行解析,得到請求資源標識符(URI)。然後根據該URI,調用HandlerMapping獲得該Handler配置的所有相關的對象(包括Handler對象以及Handler對象對應的攔截器),最後以HandlerExecutionChain對象的形式返回;

3.DispatcherServlet 根據獲得的Handler,選擇一個合適的HandlerAdapter。(附註:如果成功獲得HandlerAdapter後,此時將開始執行攔截器的preHandler(...)方法)

4. 提取Request中的模型數據,填充Handler入參,開始執行Handler(Controller)。 在填充Handler的入參過程中,根據你的配置,Spring將幫你做一些額外的工作:

HttpMessageConveter: 將請求消息(如Json、xml等數據)轉換成一個對象,將對象轉換為指定的響應信息

數據轉換:對請求消息進行數據轉換。如String轉換成Integer、Double等

數據根式化:對請求消息進行數據格式化。 如將字元串轉換成格式化數字或格式化日期等

數據驗證: 驗證數據的有效性(長度、格式等),驗證結果存儲到BindingResult或Error中

5. Handler執行完成後,向DispatcherServlet返回一個ModelAndView對象;

6. 根據返回的ModelAndView,選擇一個適合的ViewResolver(必須是已經注冊到Spring容器中的ViewResolver)返回給DispatcherServlet;

7.ViewResolver 結合Model和View,來渲染視圖

8. 將渲染結果返回給客戶端。


Spring工作流程描述

為什麼Spring只使用一個Servlet(DispatcherServlet)來處理所有請求?

詳細見J2EE設計模式-前端控制模式

Spring為什麼要結合使用HandlerMapping以及HandlerAdapter來處理Handler?

符合面向對象中的單一職責原則,代碼架構清晰,便於維護,最重要的是代碼可復用性高。如HandlerAdapter可能會被用於處理多種Handler。

3. springboot啟動過程圖解(springboot的啟動流程圖)

springboot啟動過程是?

總覽:

上圖為SpringBoot啟動結構圖,我們發現啟動流程主要分為三個部分,第一部分進行、SpringApplication的初始化模塊,配置一些基本的環境變數、資襪橘源、構造器、監聽器,第告世團二部分實現了應用具體的啟動方案,包括啟動流程的監聽模塊、載入配置環境模塊。

及核心的創建上下文環境模塊,第三部分是自動化配置模塊,該模塊作為springboot自動配置核心,在後面的分析中會詳細討論。在下面的啟動程序中我們會串聯起結構中的主要功能。

啟動:

每個SpringBoot程序都有一個主入口,也就是main方法,main裡面調用SpringApplication.run()啟動整個spring-boot程序,該方法所在類需要返雹使用@SpringBootApplication註解。

以及@ImportResource註解(ifneed),@SpringBootApplication包括三個註解,功能如下:@EnableAutoConfiguration:SpringBoot根據應用所聲明的依賴來對Spring框架進行自動配置。

@SpringBootConfiguration(內部為@Configuration):被標注的類等於在spring的XML配置文件中(applicationContext.xml),裝配所有bean事務,提供了一個spring的上下文環境。

@ComponentScan:組件掃描,可自動發現和裝配Bean,默認掃描SpringApplication的run方法里的Booter.class所在的包路徑下文件,所以最好將該啟動類放到根包路徑下。

springboot啟動流程是什麼?

首先貼一張很不錯的圖,SpringBoot啟動結構圖,圖片出自SpringBoot啟動流程解析。本文的分析基於SpringBoot2.1.5,非Spring的代碼只有下面這個啟。

提供大量優秀的Web框架方便開發等等。Spring框架具有控制反轉(IOC)特性,IOC旨在方便項目維護和測試,它提供了一種通過Java的反射機制對Java對象進行統一的配置和管理的方法。

Spring框架利用容器管理對象的生命周期,容器可以通過掃描XML文件或類上特定Java註解來配置對象,開發者可以通過依賴查找或依賴注入來獲得對象。

SpringBoot的啟動主要是通過實例化SpringApplication來啟動的。

啟虧豎胡動過程主要做了以下幾件事情:配置屬性、獲取監聽器,發布應用開始啟動事件初、始化輸入參數、配置環境,輸出banner、創建上下文、預處理上下文、刷新上下文(載入tomcat容器)、再刷新上下文、發布應用已經啟動事件、發布應用啟動完成事件。

在SpringBoot中啟動tomcat的工作在刷新上下這一步。

而tomcat的啟動主要是實例化兩個組件:Connector、Container,一個纖汪tomcat實例就是一個Server,一個Server包含多個Service,也就是多個應用程序,每個Service包含多個銷攔Connector和一個Container,而一個Container下又包含多個子容器。

springboot啟動流程

springboot啟動流程如下:

啟動流程主要分為三個部分,第一部分進行、SpringApplication的初始化模塊,配置一些基本的環境變數、資源、構造器、監聽器,第二部分實現了應用具體的啟動方案,包括啟動流程的監聽模塊、載入配置環境模塊。

及核心的創建上下文環境模塊,第三部分是自枯譽動化配置模塊,該模塊衡襪作為springboot自動配置核心,在後面的分析中會詳細討論。在下面的啟動程序中我們會串沒攔段聯起結構中的主要功能。

啟動過程主要做了以下幾件事情:

配置屬性、獲取監聽器,發布應用開始啟動事件初、始化輸入參數、配置環境,輸出banner、創建上下文、預處理上下文、刷新上下文(載入tomcat容器)、再刷新上下文、發布應用已經啟動事件、發布應用啟動完成事件。

在SpringBoot中啟動tomcat的工作在刷新上下這一步。

而tomcat的啟動主要是實例化兩個組件:Connector、Container,一個tomcat實例就是一個Server,一個Server包含多個Service,也就是多個應用程序,每個Service包含多個Connector和一個Container,而一個Container下又包含多個子容器。

springboot啟動流程

入口是一個main方法,這個main方法裡面new一個SpringApplication對象,傳入bean源,就是註解了SpringBootApplication的物爛那個類,調用run方法。

springboot啟動流程分為兩部分一部分是准備階段,一部分是運行階段

准備階段主要有這么幾步:

1、配置bean的源,就是bean的來源,就是註解了SpringBootApplication的那個類。

2、推斷,推斷應用類型,有webflux,webservlet,none

推斷主類,這個是通過線程堆棧實現,構造一個運行時異常絕笑,找異常堆棧裡面找mian所在的那個類。

3、載入上下文初始化器在這里可以調整applicationcontext

4、載入應用事件監聽器這兩個東西都是在mete-info/spring.factories文件裡面。

運行階段,就是調用run方法

先是載入SpringApplication運行時監聽器罩宏漏,SpringApplicationRunListeners,默認只有一個EventPublishingRunListener,需要傳入准備階段載入的listeners,在這個地方調用一個廣播器廣播事件。

然後會根據推斷類型,創建一個ApplicationContext,

對這個context初始化,refresh方法

最後會返回這個context。

自動裝配:

1、激活自動配置,EnableAutoConfiguration

2、實現自動配置(註解裝配,模式裝配,條件裝配)配置bean

3、將這個配置配置到spring.factories文件裡面去

閱讀全文

與java用異常控制流程圖相關的資料

熱點內容
tplink默認無線密碼是多少 瀏覽:33
ipaddgm文件 瀏覽:99
lua語言編程用哪個平台 瀏覽:272
政采雲如何導出pdf投標文件 瀏覽:529
php獲取postjson數據 瀏覽:551
javatimetask 瀏覽:16
編程的話要什麼證件 瀏覽:94
錢脈通微信多開 瀏覽:878
中學生學編程哪個培訓機構好 瀏覽:852
榮耀路由TV設置文件共享錯誤 瀏覽:525
upx專用脫殼工具 瀏覽:171
cad圖紙怎麼以電子文件傳送 瀏覽:13
電腦pdf文件無法重命名怎麼辦 瀏覽:382
戴爾工業編程筆記本哪個好 瀏覽:932
網格線數據圖表格如何換數據 瀏覽:37
5s升級到ios10會卡嗎 瀏覽:166
excel共享後文件鎖定 瀏覽:392
判斷給定路徑是一個文件 瀏覽:365
耳機注冊表文件丟失win10 瀏覽:762
js獲取定位坐標系 瀏覽:84

友情鏈接