最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、Mybatis

1、簡介

MyBatis 是一個(gè)基于 Java 的持久層框架,是對(duì) jdbc 的封裝,它讓數(shù)據(jù)庫底層操作變的透明。Mybatis 的操作都是圍繞一個(gè) sqlSessionFactory 實(shí)例展開的。Mybatis 通過配置文件關(guān)聯(lián)到各實(shí)體類的 Mapper 文件,Mapper 文件中配置了每個(gè)類對(duì)數(shù)據(jù)庫所需進(jìn)行的 sql 語句映射。在每次與數(shù)據(jù)庫交互時(shí),通過 sqlSessionFactory 拿到一個(gè)sqlSession,再執(zhí)行 sql 命令。在 Mybatis 中,sqlSessionFactory 可以看為一個(gè)數(shù)據(jù)庫連接池,并使用的單例模式;sqlSession 就相當(dāng)于一個(gè)數(shù)據(jù)庫連接,它存活在某個(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ù)庫的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模塊,可以簡單的把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)的頁面

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、簡介:

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)簡易外賣訂餐系統(tǒng)

    java實(shí)現(xiàn)簡易外賣訂餐系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡易外賣訂餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Java 1.0和Java 1.1 的IO類的比較

    Java 1.0和Java 1.1 的IO類的比較

    Java庫的IO分為輸入/輸出兩部分。早期的Java 1.0版本的輸入系統(tǒng)是InputStream及其子類,輸出系統(tǒng)是OutputStream及其子類。后來的Java 1.1版本對(duì)IO系統(tǒng)進(jìn)行了重新設(shè)計(jì)。本分對(duì)此做了分析和比較,有利于學(xué)習(xí),最后給出了例子。
    2013-11-11
  • Java隊(duì)列數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)

    Java隊(duì)列數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)

    這篇文章主要介紹了Java隊(duì)列數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn),隊(duì)列是一種特殊的線性表,只允許在表的隊(duì)頭進(jìn)行刪除操作,在表的后端進(jìn)行插入操作,隊(duì)列是一個(gè)有序表先進(jìn)先出,想了解更多相關(guān)資料的小伙伴可以參考下面文章的詳細(xì)內(nèi)容
    2021-12-12
  • 關(guān)于swagger配置及踩坑@Api參數(shù)postion無效解決接口排序問題

    關(guān)于swagger配置及踩坑@Api參數(shù)postion無效解決接口排序問題

    這篇文章主要介紹了關(guān)于swagger配置及踩坑@Api參數(shù)postion無效解決接口排序問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • SpringCloud使用Feign文件上傳、下載

    SpringCloud使用Feign文件上傳、下載

    這篇文章主要為大家詳細(xì)介紹了SpringCloud使用Feign文件上傳、下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • SpringBoot+Websocket實(shí)現(xiàn)一個(gè)簡單的網(wǎng)頁聊天功能代碼

    SpringBoot+Websocket實(shí)現(xiàn)一個(gè)簡單的網(wǎng)頁聊天功能代碼

    本篇文章主要介紹了SpringBoot+Websocket實(shí)現(xiàn)一個(gè)簡單的網(wǎng)頁聊天功能代碼,具有一定的參考價(jià)值,有需要的可以了解一下
    2017-08-08
  • Java GZIPOutputStream流壓縮文件的操作

    Java GZIPOutputStream流壓縮文件的操作

    這篇文章主要介紹了Java GZIPOutputStream流壓縮文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java性能工具JMeter實(shí)現(xiàn)上傳與下載腳本編寫

    Java性能工具JMeter實(shí)現(xiàn)上傳與下載腳本編寫

    性能測試工作中,文件上傳也是經(jīng)常見的性能壓測場景之一,那么 JMeter 文件上傳下載腳本怎么做,本文詳細(xì)的來介紹一下,感興趣的可以了解一下
    2021-07-07
  • Java實(shí)力彈彈球?qū)崿F(xiàn)代碼

    Java實(shí)力彈彈球?qū)崿F(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)力彈彈球?qū)崿F(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 詳解Java Streams 中的異常處理

    詳解Java Streams 中的異常處理

    這篇文章主要介紹了Java Streams 中的異常處理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論

建宁县| 贵港市| 麻江县| 苍梧县| 聂荣县| 八宿县| 大同市| 邵阳市| 鞍山市| 阿勒泰市| 临夏县| 团风县| 建平县| 黔西| 乐都县| 延吉市| 蒙自县| 于都县| 鹤庆县| 板桥市| 手游| 蒲江县| 梅河口市| 安义县| 海原县| 电白县| 鄢陵县| 昔阳县| 库伦旗| 大连市| 彭州市| 广南县| 健康| 合江县| 沐川县| 城步| 莱西市| 鹤岗市| 孝昌县| 抚松县| 林甸县|