日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

这应该是最通俗易懂的一篇Spring知识点总结了

發布時間:2025/3/21 javascript 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 这应该是最通俗易懂的一篇Spring知识点总结了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于Spring家族的東西很多,一次性寫完也不太現實。所以這一次先更新Spring「最核心」的知識點:AOP和IOC

無論是入門還是面試,理解AOP和IOC都是非常重要的。在校招的時候,我沒被問過Mybatis/Hibernate/Struts2這樣的框架,而Spring就經常會被問到。

為什么要用Spring

當年的我,剛學Spring的時候,會想:『這IOC和AOP』是什么鬼玩意啊?一大堆的名詞「控制反轉」「依賴注入」「面向切面編程」。這是在給我搞笑的吧。

在最開始學的IOC折騰了一大堆的玩意,結果就是在管「創建對象」的事??逗我呢???我直接new一個對象出來不香嗎?

有這種想法這種明顯就是「代碼寫得少了,想得多了

我們寫代碼,不僅僅是要能實現功能,實現完了以后我們還得對寫過的代碼「維護」。如果我們的代碼寫得很爛,那「維護」的成本就很高。

維護實際上是做什么事?

  • 出了問題需要找到是哪塊的代碼有問題
  • 在原有的基礎上加入一些新的功能(也就是所謂的迭代)
  • 面對重復的/繁瑣的非業務代碼:

  • 如果程序出了問題,我們得看吧?誰也保證不了重復的代碼就沒有問題。
  • 我們要想加一個新的功能,還得按原來的方式寫吧?代碼量會越來越多,越來越多….
  • 上一期的「Mybatis」教程也講到了,我們的JDBC寫得好好的,運行的效率也是杠杠的。但是JDBC需要我們「自行」處理的細節太多了,我們需要在里邊添加各種「重復」的代碼。

    我們使用ORM框架,那么我們就可以更加「專注」去實現本身的業務,ORM框架把「重復」的代碼都屏蔽掉,代碼維護起來就比JDBC要方便。

    Spring IOC 解決的是?對象管理和對象依賴的問題

    Spring AOP 解決的是?非業務代碼抽取的問題

    (這里要是沒基礎的同學,可能看不太懂,下面再來解釋解釋一下應該就沒問題了)

    Spring IOC

    提到Spring IOC,隨便去網上一搜,我們就可以看到「依賴注入」「控制反轉」這兩個詞。

    很多人都會試圖要把這兩個詞給解釋清楚,但是太難了,這兩個詞真的是太難給解釋清楚了。

    Spring IOC 解決的是對象管理和對象依賴的問題。本來我們的對象都是new出來的,而我們如果使用Spring 則把對象交給「IOC容器」來管理。

    三歪這逼搞事情了。「依賴注入」和「控制反轉」都沒講,現在還來了個「IOC容器」。

    「IOC容器」是什么?我們可以理解為是一個「工廠」,我們把對象都交由這個「工廠」來管理,包括對象的創建和對象之間的依賴關系等等。等我們要用到對象的時候,就從這個「工廠」里邊取出來。

    「控制反轉」指的就是:本來是「由我們自己」new出來的對象,現在交給了IOC容器。把這個對象的「控制權」給「他方」了。「控制反轉」更多的是一種思想或者說是設計模式,把原有由自己掌控的事交給「別人」來處理。

    「依賴注入」更多指的是「控制反轉」這個思想的實現方式:對象無需自行創建或管理它們的依賴關系,依賴關系將被「自動注入」到需要它們的對象當中去。

    最簡單理解「依賴注入」和「控制反轉」:本來我們的對象都是「由我們自己」new出來的,現在我們把這個對象的創建權限和對象之間的依賴關系交由「IOC容器」來管理。

    悄悄話:我個人本身是不太喜歡琢磨每個詞的含義的,很多時候大佬們也很難解釋清楚。如果是初學的同學,也不用太糾結每個名詞的具體含義,深究下去也沒有太大的必要。

    現在問題又來了,為什么我們要把對象給「IOC容器」來管理呢?要理解這個,我建議可以先去看看我寫過的「工廠模式

    理論上,我們可以把「IOC容器」也當做是一個「工廠」,使用IOC的好處就是:

    • 將對象集中統一管理,便于修改
    • 降低耦合度(調用方無需自己組裝,也無需關心對象的實現,直接從「IOC容器」取就好了)

    IOC 需要學什么?

    我們在使用Spring的時候,首先我們要學習的就是怎么把對象交給「IOC容器管理」

    Spring提供了四種方式:

    • 注解
    • XML
    • JavaConfig
    • 基于Groovy DSL配置

    總的來說:我們以XML配置+注解來裝配Bean比較多,其中注解這種方式占大部分。

    把對象放到「IOC容器」了以后,對象與對象之間是有關系的,我們需要把對象之間的依賴告訴Spring,讓它來幫我們解決掉對象的依賴關系。

    「對象之間的關系」別想得太復雜了。在日常開發中其實很多時候就是A對象里邊有B對象的屬性而已。

    一般來說我們會通過構造器或者屬性(setting方法)的方式來注入對象的依賴

    舉個例子:日常開發中,我們很多時候用@Component注解標識將對象放到「IOC容器」中,用@Autowired注解將對象注入

    下面這張圖就很好總結了以各種方式來對Bean的定義和注入

    ?

    Spring AOP

    AOP:Aspect Object Programming 「面向切面編程」,聽起來是不是很牛逼。

    Spring AOP主要做的事情就是:「把重復的代碼抽取,在運行的時候往業務方法上動態植入“切面類代碼”」

    舉個例子,現在我們有以下的代碼:

    上面的代碼其實最核心的就一行代碼:「保存user對象到數據庫中」

    session.save(user);

    我們的數據庫表肯定不止user一張表,對數據庫的增刪改也肯定不止add()方法一個。所以我們可以想象到:對數據庫的每次操作,都要寫「開啟事務」和「關閉事務」這種代碼。

    這種代碼對我們來說是重復的,于是我們會想把這種代碼給「抽取」出來。

    如果我們單純用OOP(面向對象)的思想去把代碼給優化掉,最終我們的效果可能是這樣的:

    即使這樣看起來代碼已經很少了,但我們細想一下會發現:update()/delete()方法同樣也會有aop.begin()這樣的重復代碼的。

    我們想要「消滅」掉這些重復代碼,可以怎么做?這個時候我們應該能想到「動態代理」,通過動態代理,我們可以把對象「增強」,將非業務代碼寫在要「增強」的邏輯上。

    完了以后,我們就可以通過「增強后的對象」去調用方法,最終屏蔽掉「重復代碼」

    效果可能會如下:

    上面是我們手動寫的代理來實現對「非業務代碼」的抽取,類似這樣的場景會有很多:比如我們要做權限控制,要對參數進行校驗等等。

    Spring 支持了AOP,讓我們可以不用自己「手動」去寫代理對象,達到將「非業務代碼」的抽取的效果。

    我們可以體驗一波Spring AOP是怎么弄的,跟上面的對比對比:

    效果如下:

    總結

    建議:在學習IOC之前,可以先看看「工廠模式」。在學習AOP之前,可以先看看「代理模式」

    理解了「工廠模式」那就知道為什么我們不再直接new對象,理解了「代理模式」,我們就知道Spring AOP的底層技術其實就是「動態代理」,這樣學習IOC和AOP的時候,就會輕松很多。

    還要一點就是不要被「名詞」給嚇唬了,之前不懂某個技術的時候,聽別人講一些名詞,我對此完全不懂。那就可能會認為這個技術會很牛逼,其實等真正接觸下來,學習完了以后,其實發現也不過如此嘛。

    總結

    以上是生活随笔為你收集整理的这应该是最通俗易懂的一篇Spring知识点总结了的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 精品人妻一区二区三区久久 | 欧美色图11p| 欧美三级成人 | 日韩欧美毛片 | av网站一区二区 | 国产精品资源在线观看 | 久久久影视 | 麻豆国产尤物av尤物在线观看 | 国内偷拍av| 一级免费av | 超碰在线图片 | 欧美一级黄色片网站 | 69影院少妇在线观看 | 亚洲国产精品一区二区久久hs | 跪求黄色网址 | 欧美激情一级 | 亚洲影院在线播放 | 国产精品久久久亚洲 | 精品国产视频一区二区 | 精品91久久久 | 久久精品视频中文字幕 | 天堂中文视频在线 | 亚洲精品123区 | 亚洲国产精品二区 | 亚洲av无码精品色午夜果冻不卡 | 好屌妞视频这里只有精品 | 亚洲精品国偷拍自产在线观看蜜桃 | 一级视频在线免费观看 | 秋霞福利| 992av| 亚洲国产欧美精品 | 亚洲国产成人精品女人久久 | 亚洲国产精品成人 | 日本aⅴ在线观看 | 99精品在线免费观看 | 亚洲视频一 | 日本少妇做爰全过程毛片 | 中文字幕高清在线免费播放 | 亚洲精品在线免费看 | 一级视频在线 | 亚洲欧洲一区 | 人人人人爽 | 香蕉视频啪啪 | 国产精品女人久久久 | 久久久久亚洲av无码a片 | 伊人夜夜 | 亚洲日日操| 欧美日韩综合一区二区 | 国产农村妇女毛片精品久久麻豆 | 美人被强行糟蹋np各种play | 日韩一区二区三区网站 | 伊人国产在线 | 黑人与日本少妇高潮 | 亚洲人无码成www久久 | 日本特黄网站 | xxxx日本高清 | 一道本无吗一区 | 久久精品人妻一区二区 | 日韩免费黄色 | 99热热99| 中文字幕av免费观看 | 激情三区 | 欧美丰满熟妇bbbbbb百度 | 少妇色视频 | 黄色一级片在线免费观看 | 公交上高潮的丁芷晴 | 久久精品人人爽 | 国产1区2区3区 | 天天干天天日 | 91精品国产视频 | 日韩三级中文字幕 | 日本美女黄色一级片 | 奇米影视在线播放 | 欧美一级久久 | 片集网 | 久久久网址 | 国产av 一区二区三区 | 亚洲综合色成人 | 五月综合色 | www.youjizz.com久久| 国产一区二区三区在线免费 | 特级一级黄色片 | 干操网| 男女啪啪毛片 | 日本三级韩国三级三级a级按摩 | 西西人体做爰大胆gogo | 成人夜晚看av | 奇米777狠狠| av无码一区二区三区 | 91中文字幕| 久久中文娱乐网 | sese久久 | 免费人妻精品一区二区三区 | 欧美激情999 | 奇米四色影视 | 波多野结衣mp4 | 隔壁邻居是巨爆乳寡妇 | 正在播放久久 | 日韩第一页在线观看 |