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>
原文链接:https://blog.csdn.net/scgaliguodong123_/article/details/49782489
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
还没有人抢沙发呢~