欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中Mybatis,SpringMVC,Spring的介紹及聯(lián)系

 更新時(shí)間:2021年10月18日 11:41:58   作者:木澤銳  
這篇文章主要為大家詳細(xì)介紹了Java中Mybatis,SpringMVC,Spring的介紹及聯(lián)系,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、Mybatis

1、簡(jiǎn)介

MyBatis 是一個(gè)基于 Java 的持久層框架,是對(duì) jdbc 的封裝,它讓數(shù)據(jù)庫(kù)底層操作變的透明。Mybatis 的操作都是圍繞一個(gè) sqlSessionFactory 實(shí)例展開的。Mybatis 通過配置文件關(guān)聯(lián)到各實(shí)體類的 Mapper 文件,Mapper 文件中配置了每個(gè)類對(duì)數(shù)據(jù)庫(kù)所需進(jìn)行的 sql 語句映射。在每次與數(shù)據(jù)庫(kù)交互時(shí),通過 sqlSessionFactory 拿到一個(gè)sqlSession,再執(zhí)行 sql 命令。在 Mybatis 中,sqlSessionFactory 可以看為一個(gè)數(shù)據(jù)庫(kù)連接池,并使用的單例模式;sqlSession 就相當(dāng)于一個(gè)數(shù)據(jù)庫(kù)連接,它存活在某個(gè)具體的業(yè)務(wù)請(qǐng)求中。 創(chuàng)建映射器 映射器是 Mybatis 中最重要、最復(fù)雜的組件,它由一個(gè)接口和對(duì)應(yīng)的 XML 文件(或注解組成)。

2、工作原理:

mybatis通過sqlSessionFactoryBuilder從mybatis-config.xml配置文件(如上圖第一步)中構(gòu)建出sqlSessionFactory(線程安全);然后調(diào)用sqlSessionFactory的openSession()方法直接開啟一個(gè)sqlSession,在通過sqlSession實(shí)例獲得Mapper.xml對(duì)象并運(yùn)行Mapper.xml映射的sql語句,完成對(duì)數(shù)據(jù)庫(kù)的CRUD和事務(wù)提交,每完成一次操作之后sqlSession都需要關(guān)閉.

3、工作流程圖:

在這里插入圖片描述

二、SpringMVC

1、MVC工作原理:

M:Model(完成業(yè)務(wù)邏輯 Service/dao/entity/)

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

C:Controller(控制器->類似于CPU 接受請(qǐng)求->調(diào)用M->返回V)

1.1、MVC工作原理圖:

  

2、SpringMVC工作原理

SpringMVC是一個(gè)MVC的開源框架,SpringMVC是Spring的一個(gè)后續(xù)產(chǎn)品,其實(shí)就是Spring在原有基礎(chǔ)上,又提供了web應(yīng)用的MVC模塊,可以簡(jiǎn)單的把SpringMVC理解為是spring的一個(gè)模塊(類似AOP,IOC這樣的模塊),網(wǎng)絡(luò)上經(jīng)常會(huì)說SpringMVC和Spring無縫集成,其實(shí)SpringMVC就是Spring的一個(gè)子模塊,所以根本不需要同spring進(jìn)行整合。

2.1、SpringMVC中的組件:

前端控制器(DispatcherServlet):接收請(qǐng)求,響應(yīng)結(jié)果,相當(dāng)于電腦的CPU。

處理器映射器(HandlerMapping):根據(jù)URL去查找處理器

處理器(Handler):(需要程序員去寫代碼處理邏輯的)

處理器適配器(HandlerAdapter):會(huì)把處理器包裝成適配器,這樣就可以支持多種類型的處理器,類比筆記本的適配器(適配器模式的應(yīng)用)

視圖解析器(ViewResovler):進(jìn)行視圖解析,多返回的字符串,進(jìn)行處理,可以解析成對(duì)應(yīng)的頁(yè)面

2.2、SpringMvc工作原理圖

在這里插入圖片描述

2.3、 SpringMvc工作流程

第一步:用戶發(fā)起請(qǐng)求到前端控制器(DispatcherServlet)

第二步:前端控制器請(qǐng)求處理器映射器(HandlerMapping)去查找處理器(Handler):通過xml配置或者注解進(jìn)行查找

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

第四步:前端控制器(DispatcherServlet)調(diào)用處理器適配器(HandlerAdapter)去執(zhí)行處理器(Handler)

第五步:處理器適配器去執(zhí)行Handler

第六步:Handler執(zhí)行完給處理器適配器返回ModelAndView

第七步:處理器適配器向前端控制器返回ModelAndView

第八步:前端控制器請(qǐng)求視圖解析器(ViewResolver)去進(jìn)行視圖解析

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

第十步:前端控制器對(duì)視圖進(jìn)行渲染

第十一步:前端控制器向用戶響應(yīng)結(jié)果

2.4、 SpringMVC重點(diǎn)

在于它的流程和注解,包括控制器、視圖解析器、視圖等內(nèi)容;

三、Spring

1、簡(jiǎn)介:

Spring是一種多層的J2EE應(yīng)用程序框架,其核心就是提供一種新的機(jī)制管理業(yè)務(wù)對(duì)象及其依賴關(guān)系。它是一種容器框架,用于創(chuàng)建bean,維護(hù)bean之間的關(guān)系,它可以管理web層,持久層,業(yè)務(wù)層等,可以配置各個(gè)層的組件并且維護(hù)各個(gè)層的關(guān)系

2、Spring原理:

內(nèi)部最核心的就是IOC了,動(dòng)態(tài)注入,讓一個(gè)對(duì)象的創(chuàng)建不用new了,可以自動(dòng)的生產(chǎn),這其實(shí)就是利用java里的反射,反射其實(shí)就是在運(yùn)行時(shí)動(dòng)態(tài)的去創(chuàng)建、調(diào)用對(duì)象,Spring就是在運(yùn)行時(shí),跟xml Spring的配置文件來動(dòng)態(tài)的創(chuàng)建對(duì)象,和調(diào)用對(duì)象里的方法的 。

Spring還有一個(gè)核心就是AOP這個(gè)就是面向切面編程,可以為某一類對(duì)象 進(jìn)行監(jiān)督和控制(也就是 在調(diào)用這類對(duì)象的具體方法的前后去調(diào)用你指定的 模塊)從而達(dá)到對(duì)一個(gè)模塊擴(kuò)充的功能。這些都是通過 配置類達(dá)到的。

Spring目的:就是讓對(duì)象與對(duì)象(模塊與模塊)之間的關(guān)系沒有通過代碼來關(guān)聯(lián),都是通過配置類說明管理的(Spring根據(jù)這些配置 內(nèi)部通過反射去動(dòng)態(tài)的組裝對(duì)象)

要記?。篠pring是一個(gè)容器,凡是在容器里的對(duì)象才會(huì)有Spring所提供的這些服務(wù)和功能。

Spring里用的最經(jīng)典的一個(gè)設(shè)計(jì)模式就是:模板方法模式。(這里我都不介紹了,是一個(gè)很常用的設(shè)計(jì)模式), Spring里的配置是很多的,很難都記住,但是Spring里的精華也無非就是以上的兩點(diǎn),把以上兩點(diǎn)跟理解了 也就基本上掌握了Spring.

3、Spring AOP與IOC

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

1、IoC:

概念:控制權(quán)由對(duì)象本身轉(zhuǎn)向容器;由容器根據(jù)配置文件去創(chuàng)建實(shí)例并創(chuàng)建各個(gè)實(shí)例之間的依賴關(guān)系

核心:bean工廠;在Spring中,bean工廠創(chuàng)建的各個(gè)實(shí)例稱作bean

3.2、AOP(Aspect-Oriented Programming): 面向方面編程

1、 代理的兩種方式:

靜態(tài)代理:

  • 針對(duì)每個(gè)具體類分別編寫代理類;
  • 針對(duì)一個(gè)接口編寫一個(gè)代理類;

動(dòng)態(tài)代理:

針對(duì)一個(gè)方面編寫一個(gè)InvocationHandler,然后借用JDK反射包中的Proxy類為各種接口動(dòng)態(tài)生成相應(yīng)的代理類

動(dòng)態(tài)代理知識(shí)補(bǔ)充:

不用寫代理類,虛擬機(jī)根據(jù)真實(shí)對(duì)象實(shí)現(xiàn)的接口產(chǎn)生一個(gè)類,通過類實(shí)例化一個(gè)動(dòng)態(tài)代理,在實(shí)例化動(dòng)態(tài)代理時(shí)將真實(shí)對(duì)象及裝備注入到動(dòng)態(tài)代理中,向客戶端公開的是動(dòng)態(tài)代理,當(dāng)客戶端調(diào)用動(dòng)態(tài)代理方法時(shí),動(dòng)態(tài)代理根據(jù)類的反射得到真實(shí)對(duì)象的Method,調(diào)用裝備的invoke方法,將動(dòng)態(tài)代理、

Method、方法參數(shù)傳與裝備的invoke方法,invoke方法在喚起method方法前或后做一些處理。

         1、產(chǎn)生動(dòng)態(tài)代理的類:

                        java.lang.refect.Proxy

         2、裝備必須實(shí)現(xiàn)InvocationHandler接口實(shí)現(xiàn)invoke方法

3.3、spring的幾個(gè)階段:

在這里插入圖片描述

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • java使用文件流實(shí)現(xiàn)查看下載次數(shù)

    java使用文件流實(shí)現(xiàn)查看下載次數(shù)

    這篇文章主要為大家詳細(xì)介紹了java使用文件流實(shí)現(xiàn)查看下載次數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • 關(guān)于springBoot yml文件的list讀取問題總結(jié)(親測(cè))

    關(guān)于springBoot yml文件的list讀取問題總結(jié)(親測(cè))

    這篇文章主要介紹了關(guān)于springBoot yml文件的list讀取問題總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot啟動(dòng)遇到的異常問題及解決方案

    SpringBoot啟動(dòng)遇到的異常問題及解決方案

    這篇文章主要介紹了SpringBoot啟動(dòng)遇到的異常問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SpringBoot實(shí)現(xiàn)devtools實(shí)現(xiàn)熱部署過程解析

    SpringBoot實(shí)現(xiàn)devtools實(shí)現(xiàn)熱部署過程解析

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)devtools實(shí)現(xiàn)熱部署過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • mybatis-plus復(fù)合主鍵的使用

    mybatis-plus復(fù)合主鍵的使用

    本文主要介紹了mybatis-plus復(fù)合主鍵的使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • java使用Jco連接SAP過程

    java使用Jco連接SAP過程

    這篇文章主要介紹了java使用Jco連接SAP過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • java后端訪問https證書的問題及解決

    java后端訪問https證書的問題及解決

    這篇文章主要介紹了java后端訪問https證書的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • idea快速實(shí)現(xiàn)將SpringBoot項(xiàng)目打包Docker鏡像并部署

    idea快速實(shí)現(xiàn)將SpringBoot項(xiàng)目打包Docker鏡像并部署

    本文主要介紹了idea快速實(shí)現(xiàn)將SpringBoot項(xiàng)目打包Docker鏡像并部署,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Springboot 配置RabbitMQ文檔的方法步驟

    Springboot 配置RabbitMQ文檔的方法步驟

    這篇文章主要介紹了Springboot 配置RabbitMQ文檔的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • java 自定義類比較器代碼

    java 自定義類比較器代碼

    這篇文章主要介紹了java 自定義類比較器代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評(píng)論