如何理解springaop


  初看aop,上來就是一大堆術語,而且還有個拉風的名字,面向切面編程,都說是oop的一種有益補充等等,一下子讓你不知所措,心想着:怪不得很多人都和我說aop多難多難。當我看進去以后,我才發現:它就是一些java基礎上的朴實無華的應用,包括IOC,包括許許多多這樣的名詞,都是萬變不離其中而已。

  為什么用aop?

1、 就是為了方便,看一個國外很有名的大師說,編程的人都是“懶人”,因為他把自己做的事情都讓程序做了。用了aop能讓你少些很多代碼,這點就夠充分了吧。

2、 就是為了更清晰的邏輯,可以讓你的業務邏輯去關注自己本身的業務,而不去想一些其他的事情,這些其他的事情包括:安全,事物,日志等。

  初看這么多術語,一下子都不好接受,慢慢來,很快就會搞懂。

1、 通知(Advice):就是你想要的功能,也就是上面說的安全事物日志等。你給先定義好吧,然后在想用的地方用一下! 

2、 連接點(JoinPoint):這個更好解釋了,就是spring允許你使用通知的地方,那可真就多了,基本每個方法的前,后(兩者都有也行),或拋出異常時都可以是連接點,spring只支持方法連接點,其他如aspectj還可以讓你在構造器或者屬性注入時都行,不過那不是咱關注的,只要記住,和方法有關的前前虎吼(拋出異常),搜是連接點。

3、 切入點(Pointcut):上面說的連接點的基礎上。來定義切入點,你的一個類里,有15個方法,那就是幾十個連接點對吧!但是你並不想在多有方法赴京都使用通知(使用叫植入,以后再說),你只是想讓其中的幾個,在調用這幾個方法之前、之后或者拋出異常時干點什么,那么就用切點來定義表這幾個方法,讓切點來篩選連接點,選中那幾你想要的方法。

4、切面(Aspect):切面是通知和切入點的結合,現在發現了吧?沒有連接點什么事情,連接點就是為了讓你更好的理解切點,搞出來的。明白這個概念就行了。通知說明了干什么和什么時候干(什么時候是通過方法明中的before、after、around等能知道),而切入點說明了在哪干(指定到底那個方法)這就是一個完整的切面的定義。

5、引入(Introduction):允許我們向現有的類添加新方法屬性,這不就是把切面(也就是把新方法屬性:通知定義的)用到目標類中嗎?

6、目標(Target):引入中所提到的目標類,也就是要被通知的對象,也就是真正的業務邏輯,他可以在毫不知情的情況下,被咱們植入切面。而自己專注於業務本身的邏輯。

7、代理(Proxy):怎么實現整套的aop機制的,都是通過動態代理。

8、織入(Weaving):把切面應用到目標對象來創建新的代理對象的過程。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM