強烈推薦乙個大神的人工智慧的教程:
相關概念
1.連線點(joinpoint):類裡面哪些方法可以被增強,這些方法稱為連線點
2.切入點:在類裡可以有很多的方法被增強,實際增強的方法稱為切入點
3.通知/增強:增強的邏輯,稱為增強
4.切面(aspect):增強具體方法的過程稱為切面(把增強用到切入點的過程)
表示式配置切入點
execution(《訪問修飾符》?《返回型別》《方法名》(《引數》《異常》)
以上表示式中的訪問修飾符和返回型別,方法名都可使用*表示,其中需要注意的地方是訪問修飾符和返回型別之間必須有乙個空格。
execution(* zh.spring.aop.book.*(..))
aop原理
在原有方法上增強,底層使用jdk動態**和cglib動態**。使原有方法不需要改變,一樣可以達到橫向的擴充套件,使用jdk動態**,是針對有介面的情況,建立介面實現類**物件,使用cglib動態**是針對沒有介面的情況,建立被增強類的子類**物件,在子類裡呼叫父類的方法完成增強。具體實現另寫一篇部落格記錄。
aop的使用
使用aop需要依賴aop的jar包,其中包括:
建立被增強的類book:
建立aop增強類mybook:public class book
}
在resource下建立spring-aop.xml配置檔案,分別配置前置,後置和環繞通知:public class mybook
public void after1()
public void around1(proceedingjoinpoint proceedingjoinpoint) throws throwable
}
寫測試類,測試結果:<?xml version="1.0" encoding="utf-8"?>
執行結果如下:public class testaop
}
四個處理器的優先順序前置增強...
方法之前...
add......
方法之後...
後置增強...
四個處理器的優先等級如下(從低到高),最高優先等級的最後織入:
before-->around-->afterreturning-->after
Spring中的AOP簡單使用
目錄結構 介面及實現類 public inte ce adminservice public inte ce customerservice service public class adminserviceimpl implements adminservice override public v...
spring的aop的使用
使用 aspect標籤標註的類就是乙個切面類 aspect comment public class calculatorloggingaspect before標識這個方法是個前置通知,切點表示式表示執行arithmeticacalculator藉口的add 方法。execution com.sp...
關於spring的AOP使用
目前專案中用的比較多的是 aspectj註解的切面和xml配置的aop 表述 最近這個專案用的是xml配置的aop 配置乙個跟節點,下面配置乙個advisor或者aspect,裡面再配置乙個pointcut的正則表示執行的地點和advice什麼時候執行什麼事。概念陳述 1.通知 advice 定義了...