3.Spring AOP的基本操作
1.概念
AOP:面向切面程式設計(拓展一個功能不修改原始碼實現)
2.AOP的底層原理
1.發展的過程
2.Aop原理
3.AOP相關操作
1. Joinpoint(連線點):指哪些被攔截到的點;在Spring中這些點指的是方法,因為Spring只支援方法型別的連線點;
2.Pointcut(切入點):指我們要對那些Joinpoint進行攔截的定義;
3.Advice(通知/增強):指的是攔截到Joinpoint之後所做的事情就是通知;通知分為前置通知、後置通知、異常通知、最終通知、環 繞通知(切面要完成的功能);
4.Aspect(切面)
5.Introduction(引介):引介是一種特殊的通知在不修改類的前提下,Introduction可以在類執行期間為類動態的新增一些方法或屬 性;
6.Target(目標物件):代理的目標物件(要增強的類)
7.Weaving(織入):把增強應用到Target的過程;
8.Proxy(代理):一個類被AOP織入後,就產生了一個結果代理類;
package com.study.cn.common; public class User { public void add(){} public void update(){} public void delete(){} public void selectAll(){} }
連線點 :類裡面那些方法可以被增強,這些方法被稱為連線點;
切入點:在類裡面可以有許多方法被增強,比如實際的操作中我們只增強了add() 和update(),實際增強的方法就叫切入點;
通知/增強:增強的邏輯稱為增強;比如拓展日誌功能,這個日誌功能被稱為增強;
前置通知:在方法之前執行;
後置通知:在方法之後執行;
異常通知: 在方法出現異常時執行;
最終通知: 在後置之後執行;
環繞通知: 在方法之前和之後執行;
切面: 把增強應用到具體的方法上面的過程稱為切面(把增強應用到切入點的過程)
4.spring的基於aop操作(基於aspectj的xml方式)
1.Aspectj簡介
1.Aspectj是一個面向切面的框架,它拓展了Java語言,Aspectj定義了AOP的基本語法所以有一個專門的編譯器用來生成遵守Java位元組編碼的Class檔案;
2.Aspectj是一個基於java的AOP框架;
3.Spring2.0之後新增了對Aspectj切點的表示式的支援;
[email protected]是Aspectj1.5新增的功能,通過JDK5註解技術,允許直接在Bean類中定義切面;
5.新版的Spring框架建議使用Apectj方式開發Aop;
6.使用Aspectj需要匯入Spring AOP和Aspectj相關jar包;
2.Spring的AOP的操作
1.在Spring裡面進行AOP的操作,使用aspectj實現;
2.Aspectj不是spring的部分,和spring一起使用進行AOP的操作;
3.Spring2.0新增了對Aspectj的支援;
3.使用aspectj實現AOP的兩種方式
1.基於aspectj的xml方式
2.基於aspectj的註解方式
4.AOP開發的準備
1.除了匯入基本的jar外,還需要匯入aop相關的 jar
2.引入aop的約束
4.使用表示式配置切入點;
1.切入點:實際增強的方法;
2.常用表示式
excution(訪問修飾符 返回型別 方法名 引數)
4.基於Aspectj的XML方式
5.Aspectj的其他操作
6.基於aspectj的註解方式
1.匯入jar,建立物件;
2.在spring核心配置檔案中,開啟aop操作
3.在增強類上面用註解完成aop操作
[email protected]提供了不同的通知型別
[email protected] 前置通知,相當於BeforeAdvice;
[email protected]後置通知,相當於AfterReturningAdvice;
[email protected] 環繞通知,相當於MethodInterceptor;
[email protected] 丟擲通知,相當於ThrowAdvice
[email protected]最終通知,不管是否異常,該通知都會執行;