Spring中execution語法

語法格式

execution(修飾符 返回類型 切入點類 切入點方法(參數) 異常拋出)

修飾符: 可選,支持通配符,(public/private/protected)

返回類型: 必填,支持通配符,可以使用 * 來匹配所有的返回值類型

切入點類: 可選,支持通配符,指定切入點類

切入點方法: 必填,支持通配符,指定要匹配的方法名,可以使用"*"通配符來匹配所有方法

參數: 若無可不填,指定方法聲明中的形參列表,支持兩個通配符,即*和…

其中*代表一個任意類型的參數,而…代表零個或多個任意類型的參數

() 匹配一個不接受任何參數的方法

(…) 匹配一個接受任意數量參數的方法,可以是零個或多個

(*) 匹配一個接受一個任何類型的參數的方法,只能是一個

(*,String) 匹配一個接受兩個參數的方法,其中第一個參數是任意類型,第二個參數必須是String類型

異常拋出: 可選,支持通配符,指定方法聲明拋出的異常

常用實例

<!-- 【1、攔截所有public方法】 -->
<aop:pointcut expression="execution(public * *(..))" id="pt"/>  

<!-- 【2、攔截所有save開頭的方法】 -->
<aop:pointcut expression="execution(* save*(..))" id="pt"/> 

<!-- 【3、攔截指定類的指定方法, 攔截時候一定要定位到方法】 -->
<aop:pointcut expression="execution(* com.shore.dao.impl.UserDao.save(..))" id="pt"/>

<!-- 【4、攔截指定類的所有方法】 -->
<aop:pointcut expression="execution(* com.shore.dao.impl.UserDao.*(..))" id="pt"/>

<!-- 【5、攔截指定包,以及其自包下所有類的所有方法】 -->
<aop:pointcut expression="execution(* com..*.*(..))" id="pt"/>

<!-- 【6、多條件】 -->
<!-- 或:||   or -->
<aop:pointcut expression="execution(* com.shore.dao.impl.UserDao.save(..)) || execution(* com.shore.dao.impl.MessageDao.save(..))" id="pt" />

<aop:pointcut expression="execution(* com.shore.dao.impl.UserDao.save(..)) or execution(* com.shore.dao.impl.MessageDao.save(..))" id="pt" />

<!-- 且:&&   and -->  <!-- 語法雖然沒錯,但,沒意義 -->
<aop:pointcut expression="execution(* com.shore.dao.impl.UserDao.save(..)) && execution(* com.shore.dao.impl.MessageDao.save(..))" id="pt" />

<aop:pointcut expression="execution(* com.shore.dao.impl.UserDao.save(..)) and execution(* com.shore.dao.impl.MessageDao.save(..))" id="pt" />

<!-- 【7、取非值:not  !  不攔截指定的規則,攔截除此之外的所有類的方法】 -->
<aop:pointcut expression="!execution(* com.shore.dao.impl.UserDao.save(..))" id="pt"/> <!-- 注意not前必須有空格 -->

<aop:pointcut expression=" not execution(* com.shore.dao.impl.UserDao.save(..))" id="pt"/>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章