AOP参数使用

AOP参数使用

profile-avatar

又双叒叕是程序汪2020-12-25 23:19

使用通配符和前置通知和通知参数含义


通配符

 

可以匹配任意方法和任意包

前面的*表示通配符,可以匹配任意方法名,任意类名,任意级别包名

举个例子:com.wq.test.Demo.* 表示任意方法名都被拦截作为 切点

 

上述是错误的书写

要保留方法括号() com.wq.test.Demo.*()

 

效果:

 

发现每个方法都被插入前置后置通知方法。

 



但是

当demo4带有参数则不能被标为切点 com.wq.test.Demo.*()括号没有参数那么-所运行的程序没有参数 列子:

demo4:

 

测试类:随便给个参数

 

最后结果:

 

发现demo4并没有被插入前置后置参数。

总结:如果希望匹配任意类型参数 (..)

(..)

 

效果:

 

当有多个包或者java对象

通配符另一个用法:

举个例子:

新建demo1类实现demo11方法v

 

Spring配置文件

 

测试类获取类对象

 

测试发现并没有插入demo11方法的前后通知

 

配置缺点的通背符语句,可是非常重要,对切点的方法选择

————>>这是因为配置切点需要使用通配符

 

表示这个包上的任意 类的,任意方法的,任意参数都需要,都要形成切面。

 

效果:

 


总结:以后一个公司项目组需要很多人开发,按模块进行划分,有多少个模块建立多少个包,正常写项目,每个人是都有自己的pojo,mapper等等,一个大项目相当于才算很多小块儿。

现在我需要拦截某一个项目,具体的某一个方法,或者某一个包的某一个类的,任意某一个方法,com.wq.*.service.impl.*(..) *表示声明通配符----------具体到哪个类哪个方法


 

通知参数的含义:


示例

 

结果:

 

用于获取切点传递的对象,并不影响主程序纵向运行

 

前置通知获取传入值(还没进入切点程序前做小动作)


实例:

正常程序 要传入的参数(将被前置通知给截获)

 

MyBeforeAdvice前置通知处理截获数据

怎么处理数据呢

 

结果:

 

成功取到参数信息


总结:arg0:切点方法对象,Method对象

arg1:切点方法参数

arg2:切点在哪个对象中


 

后置通知获取传出值-也叫返回值(出切点程序前做小动作)


正常程序需要返回参数:

 

获取数据

 

结果:

 


总结:

arg0:切点方法的返回值

arg1:切点方法对象

arg2:切点方法的参数

arg3:切点方法所在类的对象。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值