javascript
动态代理——》AOP —— Spring 中的 AOP||AOP 相关术语||学习 spring 中的 AOP 要明确的事
AOP 概述
什么是 AOP? ? ? ?AOP:全稱是 Aspect Oriented Programming 即:面向切面編程
AOP 的作用及優勢
作用:在程序運行期間,不修改源碼對已有方法進行增強。
優勢:減少重復代碼
提高開發效率
維護方便
AOP 的實現方式??使用動態代理技術
動態代理的特點 字節碼隨用隨創建,隨用隨加載。
動態代理常用的有兩種方式
提供者:JDK 官方的 Proxy 類。
要求:被代理類最少實現一個接口。
基于子類的動態代理提供者:第三方的 CGLib,如果報 asmxxxx 異常,需要導入 asm.jar。
要求:被代理類不能用 final 修飾的類(最終類)。
Spring 中的 AOP
AOP 相關術語
Joinpoint(連接點): 所謂連接點是指那些被攔截到的點.在spring中,這些點指的是方法,因為spring 只支持方法類型的連接點。
Pointcut(切入點): 所謂切入點是指我們要對哪些 Joinpoint 進行攔截的定義。
Advice(通知/增強): 所謂通知是指攔截到 Joinpoint 之后所要做的事情就是通知。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?通知的類型:前置通知,后置通知,異常通知,最終通知,環繞通知。Introduction(引介): 引介是一種特殊的通知在不修改類代碼的前提下,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Introduction 可以在運行期為類動態地添加一些方 法或 Field。
Target(目標對象): 代理的目標對象。
Weaving(織入): 是指把增強應用到目標對象來創建新的代理對象的過程。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?spring 采用動態代理織入,而 AspectJ 采用編譯期織入和類裝載期織入。Proxy(代理): 一個類被 AOP 織入增強后,就產生一個結果代理類。
Aspect(切面): 是切入點和通知(引介)的結合
學習 spring 中的 AOP 要明確的事
a、開發階段(我們做的)編寫核心業務代碼(開發主線):大部分程序員來做,要求熟悉業務需求。
把公用代碼抽取出來,制作成通知。(開發階段最后再做):AOP 編程人員來做。
在配置文件中,聲明切入點與通知間的關系,即切面。:AOP 編程人員來做。
b、運行階段(Spring 框架完成的)Spring 框架監控切入點方法的執行。
一旦監控到切入點方法被運行,使用代理機制,動態創建目標對象的代理對象,
根據通知類別,在代理對象的對應位置,將通知對應的功能織入,完成完整的代碼邏輯運行。
總結
以上是生活随笔為你收集整理的动态代理——》AOP —— Spring 中的 AOP||AOP 相关术语||学习 spring 中的 AOP 要明确的事的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动态代理——事务处理
- 下一篇: Spring Boot 入门——Spri