Spring學(xué)習筆記-依賴注入(DI)與面向切面(AOP)

依賴注入

控制反轉(zhuǎn)(Inversion of Control趾访,縮寫為IoC),是面向?qū)ο缶幊讨械囊环N設(shè)計原則翼抠,可以用來減低計算機代碼之間的耦合度靡馁。其中最常見的方式叫做依賴注入(Dependency Injection,簡稱DI)机久,還有一種方式叫“依賴查找”(Dependency Lookup)臭墨。

對于spring框架來說,就是由spring來負責控制對象的生命周期和對象間的關(guān)系膘盖。對于某個具體的對象而言胧弛,以前是它控制其他對象尤误,現(xiàn)在是所有對象都被spring控制,所以這叫控制反轉(zhuǎn)结缚。所有的類都會在spring容器中登記损晤,告訴spring是什么,需要什么红竭,然后spring會在系統(tǒng)運行到適當?shù)臅r候尤勋,把要的東西主動給對象,同時也把對象交給其他需要該對象的地方茵宪。所有的類的創(chuàng)建最冰、銷毀都由 spring來控制。

Spring通過Spring配置來裝配應(yīng)用對象稀火。有三種可選方案:

  • 在XML中進行顯式配置暖哨。例:
    聲明一個Bean對象
    <bean id = "xxx" class = "xxxx"/>
    
  • 在Java中進行顯式配置。例:
    1. 新建Java類凰狞,添加注解@Configuration
    2. 在JavaConfig中聲明bean篇裁,需要編寫一個方法,這個方法會創(chuàng)
      建所需類型的實例赡若,然后給這個方法添加@Bean注解
    @Bean
    public XXX getXXX(){
      return new XXX();
    }
    
  • 隱式的bean發(fā)現(xiàn)機制和自動裝配达布。例:
    1. 在類名上添加注解@Component
    2. 在XML配置中啟用組件掃描
    <context:component-scan base-package="xxx"/>
    

面向切面

在軟件開發(fā)中,散布于應(yīng)用中多處的功能被稱為橫切關(guān)注點(crosscutting
concern)逾冬。通常來講往枣,這些橫切關(guān)注點從概念上是與應(yīng)用的業(yè)
務(wù)邏輯相分離的,但是往往會直接嵌入到應(yīng)用的業(yè)務(wù)邏輯之中粉渠,比如日
志分冈、安全和事務(wù)管理。

面向切面編程(AOP)的作用就是把這些橫切關(guān)注點與業(yè)務(wù)邏輯相分離霸株。幾個專業(yè)術(shù)語:

  • 通知(Advice) :切面的工作 雕沉,定義了切面是什么以及何時使用。Spring切面可以應(yīng)用5種類型的通知:
    • 前置通知(Before):在目標方法被調(diào)用之前調(diào)用通知功能去件;
    • 后置通知(After):在目標方法完成之后調(diào)用通知坡椒,此時不會關(guān)
      心方法的輸出是什么;
    • 返回通知(After-returning):在目標方法成功執(zhí)行之后調(diào)用通
      知尤溜;
    • 異常通知(After-throwing):在目標方法拋出異常后調(diào)用通知倔叼;
    • 環(huán)繞通知(Around):通知包裹了被通知的方法,在被通知的方
      法調(diào)用之前和調(diào)用之后執(zhí)行自定義的行為宫莱。
  • 連接點(Join point):在應(yīng)用執(zhí)行過程中能夠插入切面的一個點丈攒。
  • 切點(Poincut):匹配通知所要織入的一個或多個連接點。
  • 切面(Aspect):切面是通知和切點的結(jié)合。通知和切點共同定義了切面的全部內(nèi)容:它是什么巡验,在何時和何處完成其功能际插。
  • 引入(Introduction):允許我們向現(xiàn)有的類添加新方法或?qū)傩浴?/li>
  • 織入(Weaving):把切面應(yīng)用到目標對象并創(chuàng)建新的代理對象的過程。切面會在指定的連接點被織入到目標對象中显设。(編譯期:AspectJ框弛、類加載期:AspectJ 5、運行期:Spring AOP)

編寫切點有以下要點:

  1. 首先你要有能實現(xiàn)業(yè)務(wù)代碼的類捕捂,然后Spring要有這個類的控制權(quán)(組件)瑟枫,詳見依賴注入。
  2. 編寫你的切面類指攒,用@Aspect注解為切面類慷妙。而且要在spring配置中獲取這個類。
  3. 編寫切面方法幽七,即通知。

推薦閱讀:
控制反轉(zhuǎn)(IoC)與依賴注入(DI)
05 Spring Aop實例(AOP 如此簡單)@Aspect溅呢、@Around 注解方式配置

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末澡屡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子咐旧,更是在濱河造成了極大的恐慌驶鹉,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铣墨,死亡現(xiàn)場離奇詭異室埋,居然都是意外死亡,警方通過查閱死者的電腦和手機伊约,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門姚淆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人屡律,你說我怎么就攤上這事腌逢。” “怎么了超埋?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵搏讶,是天一觀的道長。 經(jīng)常有香客問我霍殴,道長媒惕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任来庭,我火速辦了婚禮妒蔚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己面睛,他們只是感情好絮蒿,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著叁鉴,像睡著了一般土涝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上幌墓,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天但壮,我揣著相機與錄音,去河邊找鬼常侣。 笑死蜡饵,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的胳施。 我是一名探鬼主播溯祸,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼舞肆!你這毒婦竟也來了焦辅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤椿胯,失蹤者是張志新(化名)和其女友劉穎筷登,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哩盲,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡前方,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了廉油。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惠险。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖抒线,靈堂內(nèi)的尸體忽然破棺而出莺匠,到底是詐尸還是另有隱情,我是刑警寧澤十兢,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布趣竣,位于F島的核電站,受9級特大地震影響旱物,放射性物質(zhì)發(fā)生泄漏遥缕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一宵呛、第九天 我趴在偏房一處隱蔽的房頂上張望单匣。 院中可真熱鬧,春花似錦、人聲如沸户秤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸡号。三九已至转砖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鲸伴,已是汗流浹背府蔗。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留汞窗,地道東北人姓赤。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像仲吏,于是被迫代替她去往敵國和親不铆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 本章內(nèi)容: 面向切面編程的基本原理 通過POJO創(chuàng)建切面 使用@AspectJ注解 為AspectJ切面注入依賴 ...
    謝隨安閱讀 3,132評論 0 9
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理裹唆,服務(wù)發(fā)現(xiàn)誓斥,斷路器,智...
    卡卡羅2017閱讀 134,638評論 18 139
  • 回顧2016年品腹,題目借新年閱讀的第一本書《讀書與旅行》(by詹宏志) 2016年閱讀岖食,旅途交叉红碑。54本書舞吭,57次飛...
    貝特酥閱讀 325評論 0 1
  • 2017.12.27星期二 晴 農(nóng)歷十一月十一 昨天一晚上,寶寶發(fā)熱沒睡好覺析珊,哭鬧了好多次羡鸥,我跟女兒只能耐著性子連...
    小幸福vs茹萍閱讀 247評論 2 0
  • 現(xiàn)在,此刻忠寻,我關(guān)了燈惧浴,只有手機屏幕開啟的亮光,不足以照亮十幾平米的漆黑奕剃。孩子睡了衷旅。我得以延續(xù)我腦海里的字。 我想說...
    小確幸讀書閱讀 229評論 0 1