Spring AOP 開發(從OOP到AOP)

2、Spring AOP開發


目錄

2、Spring AOP開發

2.1 什麼是AOP

2.2 爲什麼學習AOP

2.3 如何使用Spring AOP開發(AspectJ的XML方式)

2.3.1 AOP開發中的相關術語

2.3.2 通過配置AOP實現

2.3.3 Spring切入點表達式寫法

2.3.4 Spring的通知類型

2.4 Spring AOP開發(AspectJ的註解方式)

2.4.1使用註解的AOP對象目標類進行增強

2.4.2 Spring註解的切入點的配置


2.1 什麼是AOP

         在軟件業,AOP(Aspect Oriented Programming)面向切面編程,AOP是OOP的延續和擴展,能解決OOP中遇到的一些問題,是軟件開發中的一個熱點,利用AOP可以對業務邏輯的各個部分進行隔離,從而使得業務邏輯各部分之間的解耦合,提高開發效率。

Spring AOP的由來:AOP最早由AOP聯盟的租界提出來的,制定了一套規範,Spring將AOP思想引入到框架中,必須遵守AOP聯盟規範。Spring是使用AOP思想最好的框架,Spring的AOP有自己的實現方式(非常繁瑣基本不用),AspectJ是一個非常好的AOP框架,Spring就引入AspectJ作爲自身的AOP開發。


2.2 爲什麼學習AOP

         在實際開發中對業務功能增強,希望在不修改源代碼的情況下完成,而AOP可以完全的勝任此情況。AOP還可以進行權限校驗、日誌記錄、性能監控、事務控制。


2.3 如何使用Spring AOP開發(AspectJ的XML方式)

2.3.1 AOP開發中的相關術語

  1. Joinpoint:連接點(可以被攔截到的點)
  2. Pointcut:切入點(真正被攔截到的點)
  3. Advice:通知、增強(方法層面的增強)
  4. Introduction:引入(類層面的增強)
  5. Target:被增強的對象
  6. Weaving:織入(將通知Advice應用到目標Target過程)
  7. Aspect:切面(多個通知Advice和多個切入點Pointcut組合)
  8. Proxy:代理對象

 

2.3.2 通過配置AOP實現

 

2.3.3 Spring切入點表達式寫法

Spring切入點表達式是基於execution的函數完成的

語法格式:[訪問修飾符] 方法返回值 包名.類名.方法名(參數)

舉例:

  1. Public void com.sc.aop.ProductDaoImpl.save(..)      //指定包下的指定類方法
  2. *  *.*.*.*DaoImpl.save(..)   //指定包層級下的類後綴爲DaoImpl下的save方法
  3. * com.sc.aop.ProductDao+.save(..)  //指定包下的當前類及其子類下的save方法
  4. * com.sc.aop..*.*(..)                //指定包及子包下的所有類中的所有方法

 

2.3.4 Spring的通知類型

前置通知:在目標方法執行之前進行操作

            前置通知可以獲得切入點(增強方法)信息

 

後置通知:在目標方法執行之後進行操作

           後置通知可以獲得切入點(增強方法)的返回信息

 

環繞通知:在目標方法執行之前和之後進行操作

        

            也能夠取出返回值

 

異常拋出通知:在程序出現異常的時候進行操作

             能取出異常消息

 

最終通知:無論代碼是否異常總是會執行

 

引介通知(瞭解

引介增強,則是對類級別的增強,我們可以通過引介增強爲目標類添加新的屬性和方法,更爲誘人的是,這些新屬性或方法是可以根據我們業務邏輯需求動態變化的。

進一步瞭解請跳轉:https://blog.csdn.net/qwe6112071/article/details/50962613


2.4 Spring AOP開發(AspectJ的註解方式)

2.4.1使用註解的AOP對象目標類進行增強

開啓註解配置

在切面類中添加註解

編寫測試類測試

 

2.4.2 Spring註解的切入點的配置

Spring中利用切入點的配置來統一管理切面,避免更改時大量修改切面,只需更改切入點的value屬性即可。

         切入點

         切入點管理切面(採用:切入點所處的類.切入點方法

 


                                         謝謝閱讀!            ----知飛翀

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章