首頁 > 軟體

Java中Mybatis,SpringMVC,Spring的介紹及聯絡

2021-10-14 16:03:52

一、Mybatis

1、簡介

MyBatis 是一個基於 Java 的持久層框架,是對 jdbc 的封裝,它讓資料庫底層操作變的透明。Mybatis 的操作都是圍繞一個 sqlSessionFactory 範例展開的。Mybatis 通過組態檔關聯到各實體類的 Mapper 檔案,Mapper 檔案中設定了每個類對資料庫所需進行的 sql 語句對映。在每次與資料庫互動時,通過 sqlSessionFactory 拿到一個sqlSession,再執行 sql 命令。在 Mybatis 中,sqlSessionFactory 可以看為一個資料庫連線池,並使用的單例模式;sqlSession 就相當於一個資料庫連線,它存活在某個具體的業務請求中。 建立對映器 對映器是 Mybatis 中最重要、最複雜的元件,它由一個介面和對應的 XML 檔案(或註解組成)。

2、工作原理:

mybatis通過sqlSessionFactoryBuilder從mybatis-config.xml組態檔(如上圖第一步)中構建出sqlSessionFactory(執行緒安全);然後呼叫sqlSessionFactory的openSession()方法直接開啟一個sqlSession,在通過sqlSession範例獲得Mapper.xml物件並執行Mapper.xml對映的sql語句,完成對資料庫的CRUD和事務提交,每完成一次操作之後sqlSession都需要關閉.

3、工作流程圖:

二、SpringMVC

1、MVC工作原理:

M:Model(完成業務邏輯 Service/dao/entity/)

V:View(完成介面渲染 jsp/html)

C:Controller(控制器->類似於CPU 接受請求->呼叫M->返回V)

1.1、MVC工作原理圖:

  

2.1、SpringMVC工作原理

SpringMVC是一個MVC的開源框架,SpringMVC是Spring的一個後續產品,其實就是Spring在原有基礎上,又提供了web應用的MVC模組,可以簡單的把SpringMVC理解為是spring的一個模組(類似AOP,IOC這樣的模組),網路上經常會說SpringMVC和Spring無縫整合,其實SpringMVC就是Spring的一個子模組,所以根本不需要同spring進行整合。

2.2、SpringMVC中的元件:

前端控制器(DispatcherServlet):接收請求,響應結果,相當於電腦的CPU。

處理器對映器(HandlerMapping):根據URL去查詢處理器

處理器(Handler):(需要程式設計師去寫程式碼處理邏輯的)

處理器介面卡(HandlerAdapter):會把處理器包裝成介面卡,這樣就可以支援多種型別的處理器,類比筆電的介面卡(介面卡模式的應用)

檢視解析器(ViewResovler):進行檢視解析,多返回的字串,進行處理,可以解析成對應的頁面

2.3、SpringMvc工作原理圖

 2.4、 SpringMvc工作流程

第一步:使用者發起請求到前端控制器(DispatcherServlet)

第二步:前端控制器請求處理器對映器(HandlerMapping)去查詢處理器(Handler):通過xml設定或者註解進行查詢

第三步:找到以後處理器對映器(HandlerMappping)像前端控制器返回執行鏈(HandlerExecutionChain)

第四步:前端控制器(DispatcherServlet)呼叫處理器介面卡(HandlerAdapter)去執行處理器(Handler)

第五步:處理器介面卡去執行Handler

第六步:Handler執行完給處理器介面卡返回ModelAndView

第七步:處理器介面卡向前端控制器返回ModelAndView

第八步:前端控制器請求檢視解析器(ViewResolver)去進行檢視解析

第九步:檢視解析器像前端控制器返回View

第十步:前端控制器對檢視進行渲染

第十一步:前端控制器向用戶響應結果

2.5、 SpringMVC重點

在於它的流程和註解,包括控制器、檢視解析器、檢視等內容;

三、Spring

1、簡介:

Spring是一種多層的J2EE應用程式框架,其核心就是提供一種新的機制管理業務物件及其依賴關係。它是一種容器框架,用於建立bean,維護bean之間的關係,它可以管理web層,持久層,業務層等,可以設定各個層的元件並且維護各個層的關係

2、Spring原理:

內部最核心的就是IOC了,動態注入,讓一個物件的建立不用new了,可以自動的生產,這其實就是利用java裡的反射,反射其實就是在執行時動態的去建立、呼叫物件,Spring就是在執行時,跟xml Spring的組態檔來動態的建立物件,和呼叫物件裡的方法的 。

Spring還有一個核心就是AOP這個就是面向切面程式設計,可以為某一類物件 進行監督和控制(也就是 在呼叫這類物件的具體方法的前後去呼叫你指定的 模組)從而達到對一個模組擴充的功能。這些都是通過 設定類達到的。

Spring目的:就是讓物件與物件(模組與模組)之間的關係沒有通過程式碼來關聯,都是通過設定類說明管理的(Spring根據這些設定 內部通過反射去動態的組裝物件)

要記住:Spring是一個容器,凡是在容器裡的物件才會有Spring所提供的這些服務和功能。

Spring裡用的最經典的一個設計模式就是:模板方法模式。(這裡我都不介紹了,是一個很常用的設計模式), Spring裡的設定是很多的,很難都記住,但是Spring裡的精華也無非就是以上的兩點,把以上兩點跟理解了 也就基本上掌握了Spring.

3、Spring AOP與IOC

3.1、 IoC(Inversion of control): 控制反轉

1、IoC:

概念:控制權由物件本身轉向容器;由容器根據組態檔去建立範例並建立各個範例之間的依賴關係

核心:bean工廠;在Spring中,bean工廠建立的各個範例稱作bean

3.2、AOP(Aspect-Oriented Programming): 面向方面程式設計

1、 代理的兩種方式:

靜態代理:

  • 針對每個具體類分別編寫代理類;
  • 針對一個介面編寫一個代理類;

動態代理:

針對一個方面編寫一個InvocationHandler,然後借用JDK反射包中的Proxy類為各種介面動態生成相應的代理類

動態代理知識補充:

不用寫代理類,虛擬機器器根據真實物件實現的介面產生一個類,通過類範例化一個動態代理,在範例化動態代理時將真實物件及裝備註入到動態代理中,向用戶端公開的是動態代理,當用戶端呼叫動態代理方法時,動態代理根據類的反射得到真實物件的Method,呼叫裝備的invoke方法,將動態代理、

Method、方法引數傳與裝備的invoke方法,invoke方法在喚起method方法前或後做一些處理。

         1、產生動態代理的類:

                        java.lang.refect.Proxy

         2、裝備必須實現InvocationHandler介面實現invoke方法

3.3、spring的幾個階段:

總結

本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!


IT145.com E-mail:sddin#qq.com