纵有疾风起
人生不言弃

Spring切入点表达式

execution 其格式为:

execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) throws-pattern?) 

returning type pattern,name pattern, parameters pattern是必须的。

ret-type-pattern:可以为*表示任何返回值,全路径的类名等.。

name-pattern:指定方法名,*代表所有,set*代表以set开头的所有方法。

parameters pattern:指定方法参数(声明的类型),(..)代表所有参数,(*)代表一个参数,(*,String)代表第一个参数为任何值,第二个为String类型。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!--DAO实例-->
    <bean id="userDao" class="AopForXML.UserDao"></bean>
    <bean id="orderDao" class="AopForXML.OrderDao"/>
    <!--切面类实例-->
    <bean id="myAop" class="AopForXML.MyAop"/>

    <!--Aop配置-->
    <aop:config>
        <!--定义一个切入点表达式:拦截那些方法-->
        <!--<aop:pointcut id="pt" expression="execution(* AopForXML.*.*(..))"/>-->

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

        <!--拦截所有set开头的方法-->
        <!--<aop:pointcut id="pt" expression="execution(* set*(..))"/>-->

        <!--拦截所有save开头的方法-->
        <!--<aop:pointcut id="pt" expression="execution(* save*(..))"/>-->

        <!--拦截指定类的指定方法-->
        <!--<aop:pointcut id="pt" expression="execution(* AopForXML.OrderDao.save())"/>-->
        <!--<aop:pointcut id="pt" expression="execution(public * AopForXML.OrderDao.save())"/>-->

        <!--拦截指定类的所有方法-->
        <!--<aop:pointcut id="pt" expression="execution(public * AopForXML.OrderDao.*())"/>-->

        <!--拦截指定包以及其子包下所有类的所有方法-->
        <!--<aop:pointcut id="pt" expression="execution(* AopForXML..*.*(..))"/>-->

        <!-- 多个表达式-->
        <!--<aop:pointcut id="pt" expression="execution(* AopForXML.UserDao.save()) || execution(* AopForXML.OrderDao.save())"/> <aop:pointcut id="pt" expression="execution(* AopForXML.UserDao.save()) or execution(* AopForXML.OrderDao.save())"/>-->
        <!--取非值,不想拦截-->
        <!--<aop:pointcut id="pt" expression="!execution(* AopForXML.UserDao.save())"/>-->
        <aop:pointcut id="pt" expression=" not execution(* AopForXML.UserDao.save())"/>

        <!--切面-->
        <aop:aspect ref="myAop">

            <aop:before method="begin" pointcut-ref="pt"/>
            <aop:after method="commite" pointcut-ref="pt"/>
            <!--返回后通知-->
            <aop:after-returning method="afterReturning" pointcut-ref="pt"/>
            <!--异常通知-->
            <aop:after-throwing method="afterThrowing" pointcut-ref="pt"/>
            <!--环绕通知-->
            <aop:around method="around" pointcut-ref="pt"/>
        </aop:aspect>
    </aop:config>
</beans>

Spring切入点表达式插图

原文链接:https://blog.csdn.net/scgaliguodong123_/article/details/49782489

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

未经允许不得转载:起风网 » Spring切入点表达式
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录