Spring的3種切入點PointCut實現


   Pointcut是Join Point的集合,它是程序中需要注入Advice的位置的集合。Spring主要提供了3種切入點的實現:

   1.靜態切入點;

   2.動態切入點;

        3.自定義切入點。

 

靜態切入點

  只限於給定的方法和目標類,而不考慮方法的參數。Spring在調用鼎泰切入點時只在第一次的時候計算靜態切入點的位置,然后把它緩存起來,以后就不需要在進行計算。使用org.springframework.aso.support.RegexpMethodPointcut 可以實現靜態切入點。RegexpMethodPointcut是一個通用的正則表達式切入點,它是通過Jakarta ORO來實現的,需要把jakarta-oro-2.0.8.jar加入到ClassPath中,它的正則表達式語法和Jakarta ORO的正則表達式語法是一樣的。使用RegexpMethodPointcut的一個示例代碼如下:

1 <bean id="settersAndAbsquatulatePointcut" class="org.springframework.aop.support.RegexpMethodPointcut">
2   <property name="patterns">
3     <!--設定切入點>
4     <list>
5       <value>.*save.*</value>
6       <value>.*do.*</value>
7     </list>
8   </porperty>
9 </bean>

.*save.*:表示所有以save開頭的方法都是切入點

.*do.*:表示所有以do開頭的方法都是切入點

 

動態切入點

  動態切入點與靜態切入點的區別是,它不僅限定於給點的方法和類,動態切入點還可以以指定方法的參數。因為參數的變化性,所有動態切入點不能緩存,需要么次調用的時候都進行計算,因此使用動態切入點有很大性能損耗。

  當切入點需要在執行時根據參數值來調用通知時,就需要使用動態切入點。Spring提供了一個內建的動態切入點:控制流切入點。此切入點匹配基於當前線程的調用堆棧。開發人員只有在當前線程執行時找到特定的類和特定的方法才返回true。

  其實大多數的切入點可以使用靜態切入點,所有很少有機會創建動態切入點。

自定義切入點

  暫不學習


免責聲明!

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



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