2、Spring AOP開發
目錄
2.3 如何使用Spring AOP開發(AspectJ的XML方式)
2.4 Spring AOP開發(AspectJ的註解方式)
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開發中的相關術語
- Joinpoint:連接點(可以被攔截到的點)
- Pointcut:切入點(真正被攔截到的點)
- Advice:通知、增強(方法層面的增強)
- Introduction:引入(類層面的增強)
- Target:被增強的對象
- Weaving:織入(將通知Advice應用到目標Target過程)
- Aspect:切面(多個通知Advice和多個切入點Pointcut組合)
- Proxy:代理對象
2.3.2 通過配置AOP實現
2.3.3 Spring切入點表達式寫法
Spring切入點表達式是基於execution的函數完成的
語法格式:[訪問修飾符] 方法返回值 包名.類名.方法名(參數)
舉例:
- Public void com.sc.aop.ProductDaoImpl.save(..) //指定包下的指定類方法
- * *.*.*.*DaoImpl.save(..) //指定包層級下的類後綴爲DaoImpl下的save方法
- * com.sc.aop.ProductDao+.save(..) //指定包下的當前類及其子類下的save方法
- * 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屬性即可。
切入點
切入點管理切面(採用:切入點所處的類.切入點方法)
謝謝閱讀! ----知飛翀