1. 程式人生 > >3.Spring AOP的基本操作

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]最終通知,不管是否異常,該通知都會執行;