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

一、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的幾個階段:

在這裡插入圖片描述

總結

本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!

推薦閱讀: