Java代码实现AspectJ类似动态代理

1、编写切点标识,比如一个注解
在这里插入图片描述
2、编写Advisor,类似被@AspectJ注解标准的类
在这里插入图片描述
3、可以看出Advisor需要有Pointcut和Advice
Pointcut就是切点,Advice就是通知
在这里插入图片描述
MethodInterceptor继承了Interceptor接口,Interceptor接口继承了Advice接口
在这里插入图片描述
在这里插入图片描述
4、上面Pointcut需要ClassFilter和MethodMatcher
ClassFilter用来匹配需要切哪些类
在这里插入图片描述
MethodMatcher用来匹配要切哪些方法,注意:如果你的方法没有参数,那么isRuntime需要返回false
在这里插入图片描述
5、最后要告诉Spring为我们生成代理对象

方法一:通过BeanNameAutoProxyCreator可以对批量的Bean进行AOP,并且指定了代理逻辑,指定了一个InterceptorName,也就是一个Advice,前提条件是这个Advice也得是一个Bean,这样Spring才能找到的,但是BeanNameAutoProxyCreator的缺点很明显,它只能根据beanName来指定想要代理的Bean

方法二:DefaultAdvisorAutoProxyCreator会直接去找所有Advisor类型的Bean,根据Advisor中的PointCut和Advice信息,确定要代理的Bean以及代理逻辑,
注意:setProxyTargetClass()方法,如果不设置,则默认为false,false则表示只代理目标接口,也就是说只使用JDK的动态代理,目标类没实现接口就会报错

在这里插入图片描述
设置为true,则表示如果该目标类是一个接口,将为给定接口创建一个 JDK 代理。如果该目标类是任何其他类,将为给定类创建一个 CGLIB 代理
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值