AOP expression語法

在使用AOP時,指定一個pointcut的同時會定義一個expression,來表示對什麼方法使用AOP。

類似expression="execution(public * com.baidu.map.*Ctr.*Handle(..))"等

語法爲:execution(修飾符  返回值  包名.類名/接口名.方法名(參數列表))

其中:

1、返回類型、方法名、參數是必須有的.

2、*表示任意值. 比如返回類型,方法名等.
3、(..)可以代表所有參數,(*)代表一個參數,(*,String)代表第一個參數爲任何值,第二個參數爲String類型.


舉例說明:
1、任意公共方法的執行:
execution(public * *(..))
2、任何一個以“set”開始的方法的執行:
execution(* set*(..))
3、AccountService 接口的任意方法的執行:
execution(* com.xyz.service.AccountService.*(..))
4、定義在service包裏的任意方法的執行:
execution(* com.xyz.service.*.*(..))
5、定義在service包和所有子包裏的任意類的任意方法的執行:
execution(* com.xyz.service..*.*(..))
6、定義在pointcutexp包和所有子包裏的JoinPointObjP2類的任意方法的執行:
execution(* com.test.spring.aop.pointcutexp..JoinPointObjP2.*(..))")
最靠近(..)的爲方法名,靠近.*(..))的爲類名或者接口名


下面是一個基於配置文件的AOP環繞通知

    <!--配置第三方平臺請求日誌切面-->  
    <bean id="logHandler" class="com.baidu.map.advice.LogHandler" />  
    <aop:config>  
        <aop:aspect id="logAspect" ref="logHandler">  
            <aop:pointcut id="logPointCut" expression="execution(public * com.baidu.map.itf.*Ctr.*Handle(..))"/>                
            <aop:around method="doAround"  pointcut-ref="logPointCut"/>  
        </aop:aspect>  
    </aop:config>  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章