ssm框架原理是:將Spring、SpringMVC、MyBatis整合在一起,作為資料來源較簡單的web專案的框架。流程是:Handler Mapping根據請求找到對應的Handler,呼叫業務邏輯進行處理,然後進行視圖解析即可。
SSM框架簡介
#SSM(Spring SpringMVC MyBatis)框架集由Spring、MyBatis兩個開源框架整合而成(SpringMVC是Spring中的部分內容)。 SSM常作為資料來源較簡單的web專案的框架。
SpringMVC
SpringMVC在專案中攔截使用者請求,它的核心Servlet即DispatcherServlet承擔中介的職責,將使用者請求透過HandlerMapping去匹配Controller,Controller就是具體對應請求所執行的操作。
SpringMVC框架運行流程
使用者將請求傳送至DispatcherServlet;
DispatcherServlet收到請求查詢一個或多個HandlerMapping,找到處理該請求的Handler;
HandlerMapping根據請求找到對應的Handler,產生Handler物件返回給DispatcherServlet;
DispatcherServlet透過HandlerAdapter呼叫Handler;
Handler(Controller)呼叫業務邏輯(service)進行處理,處理完成返回ModelAndView ;
HandlerAdapter將Handler處理結果ModelAndView傳回給DispatcherServlet;
DispatcherServlet查詢一個或多個ViewReslover(視圖解析器),將ModelAndView傳給指定的ViewReslover;
ViewResloverovercherSerViewvlet;
DispatcherServlet對View進行渲染(將模型資料填入視圖中);
DispatcherServlet響應用戶,View將結果顯示在客戶端。
流程大致如下圖:
DispatcherServlet是整個Spring MVC的核心,它負責接收HTTP請求,組織協調Spring MVC的各個組成部分,其主要的工作有以下3項:
a. 截取符合特定格式的URL請求;
b. 初始化DispatcherServlet上下文對應的WebApplicationContext,並將其與業務層、持久層的WebApplicationContext建立關聯;
c.初始化Spring MVC的各個元件,並配裝到DispatcherServlet中。
Spring
Spring就像是整個專案中組裝bean的大工廠,在設定檔中可以指定使用特定的參數去呼叫實體類別的建構方法來實例化物件。也可以稱之為項目中的黏合劑。
Spring的核心思想是IOC(控制反轉),即不再需要程式設計師去明確地new一個對象,而是讓Spring框架幫你來完成這一切。 IOC容器負責實例化、定位、配置應用程式中的物件及建立這些物件間的依賴。 Spring的目的就是讓物件與物件(模組與模組)之間的關係沒有透過程式碼來關聯,都是透過配置類別說明管理的(Spring根據這些配置,內部透過反射去動態的組裝物件)。
IOC容器代表的就是org.springframework.beans包中的BeanFactory接口,其提供了IOC容器的基本功能;而org.springframework.context包下的ApplicationContext接口擴展了BeanFactory,還提供了與Spring AOP集成、國際化處理、事件傳播及提供不同層次的context實作。
簡單說,BeanFactory提供了IOC容器最基本功能,而ApplicationContext則增加了更多支援企業級功能支援。 ApplicationContext完全繼承BeanFactory,因而BeanFactory所具有的語意也適用於ApplicationContext。
Spring運行流程
載入設定文件,ApplicationContext介面。設定檔中的bean的資訊被載入在HashMap中,一個bean通常包括,id,class,property等,bean的id對應HashMap中的key,HashMap中的value就是bean。
呼叫getBean方法,getBean是用來取得applicationContext.xml檔案裡bean的,參數是bean的id。一般情況都會強制轉換成對應的業務層(介面)。
呼叫業務層(介面實作)的方法。
bean中的內容是怎麼注入進去的?簡單來講,就是在實例化一個bean時,實際上就實例化了類,它透過反射調用類中set方法將事先保存在HashMap中的類屬性注入到類中。這樣就回到了我們Java最原始的地方,物件.屬性,物件.方法。
Mybatis
Mybatis是對jdbc的封裝,它讓資料庫底層操作變的透明。 Mybatis的操作都是圍繞著一個sqlSessionFactory實例展開的。 mybatis透過設定檔關聯到各實體類別的Mapper文件,Mapper檔案中配置了每個類別對資料庫所需進行的sql語句映射。每次與資料庫互動時,透過sqlSessionFactory拿到一個sqlSession,再執行sql指令。
Mybatis透過MapperProxy動態代理dao,也就是說,執行自己寫的dao裡面的方法的時候,其實是對應的MapperProxy在代理。
Mybatis運作原理
載入設定檔
將SQL的設定資訊載入成為一個個MappedStatement對象,包括了參數對映配置,執行的SQL語句,結果映射配置,儲存在記憶體中。
SQL解析
當API介面層接收到呼叫要求時,會接收到傳入SQL的ID和傳入物件(可以是Map/JavaBean或基本資料型別),Mybatis會根據SQL的ID找到對應的MappedStatement,然後根據傳入的參數物件MappedStatement進行解析,解析後可以得到最終要執行的SQL語句和參數。
SQL執行
將最終得到的SQL和參數拿到資料庫執行,得到操作資料庫的結果。
結果對應
將操作資料庫的結果依照映射的配置轉換,可以轉換成HashMap/JavaBean或基本資料類型,並將最終的結果傳回。
以上是ssm框架原理及流程是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!