spring -7aop编程补充:切入点函数

目录

 

切入点:决定额外方法加入的位置!

1,方法切入点

2,类切入点

3,包切入点【推荐】

切入点函数:用于执行切入点表达式

1,execution

2,args

3,within

4,annotation

切入点函数的逻辑运算

and 与操作

or 或操作


切入点:决定额外方法加入的位置!

切入点的种类(使用的是execution):

1,方法切入点

定义login方法作为切入点  * login(..)。之间有空格 #注意,非java.lang包下的参数要写全称

若login方法由两个String类型的参数。 * login(String,String);

方法名全称  修饰符 包.类.方法(参数)

2,类切入点

指定类作为切入点(额外功能加入的位置)

指定类中的所有方法

* com.demo.UserServiceImpl.*(..);

所有包中相同的类作为切入点【忽略包】

* *.UserServiceImpl.*(..)【只有一级包】

* *..UserServiceImpl.*(..)【存在多级包】

3,包切入点【推荐】

价值更高;指定包作为额外功能加入的位置,自然包中所有类及其方法都会加入额外的类。

#切入点包中的所有类,必须在其一级包中,而不能在其子包中。

* *.包.类.方法名(..)

#当前包和子包都生效

* *.包..类.方法名(..)

切入点函数:用于执行切入点表达式

1,execution

最为重要的切入点函数,功能最全。

执行方法切入点表达式,类切入点表达式,包切入点表达式。

弊端:execution表达式执行切入点表达式书写麻烦。

例如:execution(* com.proxy..*.*(..))包切入点。

所以有了其他的切入点函数,目的是为了简化该切入点函数的书写复杂程度。

2,args

作用:主要用于指定方法参数类型【只指定参数类型】

execution(* *(string,string))表示两个参数都是string类型的方法切入点

args(string,string)直接表示参数是两个string类型。

3,within

作用:主要用于进行类、包类型类型的切入。【省略修饰符,方法以及参数】

class: exection(* *..UserServiceImpl.*(..)) == within(*..UserServiceImpl)

package:exection(* com.proxy..*.*(..)) == within(com.proxy..*)

4,annotation

作用:为具有特殊注解的方法加入额外功能

<aop:pointcut id="pc" expression="@annotation(注解location)"/>这个位置指你定义注解.Java文件的地址。

切入点函数的逻辑运算

指的是 整合多个切入点函数一个配合工作,进而完成更为复杂的功能。

and 与操作

案例:Proxy包中 同时 参数两个string。

within(com.proxy..*) and args(string,string)

注意:与操作不能作用于同种类型的切入点类型;因为同种方法不能同时满足,要用 or或操作。

or 或操作

例如给login和register作为方法切入点

1,以注解的形式完成

2,execution(* login(..)) or execution(* *register(..))【指的是所有叫这个名字的方法】

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值