Spring AOP 創建Advice 定義pointcut、advisor


 

  前面定義的advice都是直接植入到代理接口的執行之前和之后,或者在異常發生時,事實上,還可以對植入的時機定義的更細。

  Pointcut定義了advice的應用時機,在SpringpointcutAdvisorpointcutadvice結合成一個對象,spring內建的pointcut都對應着pointcutAdvisor,常見的有下面兩種:

 

 

NameMatchMethodPointcutAdvisor:他是最基本的pointcutAdvisor,是靜態pointcut的實例,你可以指定advice所要應用的目標方法名稱,或者用*來指定。例如 hello* 代表以hello開頭的所有方法名稱,都要應用到指定的advice上。

RegExpMethodPointcutAdvisor:可以讓你用正則表達式的方式來定義pointcut,他是靜態pointcut實例,在符合正則表達式的情況下,應用到指定的advice上。其中,bean中有一個pattern屬性,用於寫入正則表達式

 

 

 

 

public interface IHello {
   public void sayHello(String str) throws Exception;
   public void sayHelloChina(String str);
   public void sayHelloEnglish(String str);
}
public class Hello implements IHello  {
    @Override
    public void sayHello(String str) throws Exception {
        System.out.println("你好"+str);
        //測試拋出異常
        throw new Exception("故意造成異常!");
    }
    
    @Override
    public void sayHelloChina(String str) {
        System.out.println("你好"+str);
    }
    @Override
    public void sayHelloEnglish(String str) {
        System.out.println("Hello"+str);
    }
}

hello.sayHelloChina("中國");
hello.sayHelloEnglish("美國");

 

源碼下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM