写在前面:
这篇博客中,将会总结一些AOP中常用的切入点表达式及语法。
示例代码1
<aop:pointcut expression="execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern) " id=""/>这行代码中,
(1)modifiers-pattern代表访问修饰符,*则表示拦截任意访问权限---(可选字段)
(2)ret-type-pattern代表返回值,*则表示拦截任意返回值类型的---(必选字段)
(3)declaring-type-pattern,代表匹配的路径,即包+类---(可选字段)
(4)name-pattern,表示类中的方法,*则表示拦截当前的所有方法---(必选字段)
(5)param-pattern表示方法参数,(..)表示任意参数,(.)表示一个参数 ,(*,String)表示第一个参数为任意,第二个为String类型---(必选字段)
(6) throws-pattern,表示异常匹配类型---(可选字段)
(7) id则维护一个pointcut标记
(8) ?是正则表达式中的0和1,表示0个或者1个
示例代码2:
<aop:pointcut expression="execution(public * *(..))" id="pt2" />表示:拦截所有访问权限为public的方法
示例代码3:
<aop:pointcut expression="execution(* save*(..))" id="pt3" />表示:拦截所有名称为save的方法
示例代码4:
<aop:pointcut expression="execution(* aopdemo2..*.*(..))" id="pt4" />表示:拦截指定包下,及其子包的所有方法
示例代码5:
<aop:pointcut expression="execution(* aopdemo2.UserDao.save()) || execution(* aopdemo2.StudentDao.save())" id="pt5" />
<aop:pointcut expression="execution(* aopdemo2.UserDao.save()) or execution(* aopdemo2.StudentDao.save())" id="pt6" />表示:拦截aopdemo2包下UserDao或StudentDao的save方法
示例代码6:
<aop:pointcut expression="!execution(* aopdemo2.UserDao.save(..))" id="pt7" />
<aop:pointcut expression=" not execution(* aopdemo2.UserDao.save(..))" id="pt8" />
本文详细介绍了AOP中常用的切入点表达式及语法,并通过多个示例代码展示了如何使用这些表达式来精确地定义需要切面操作的目标方法。
151

被折叠的 条评论
为什么被折叠?



