SpringBoot+Aop的实现原理

本文探讨了Aop的实现原理,主要通过两种动态代理方式——JDK Proxy和Cglib。AopProxyFactory根据配置决定使用哪种策略,如果目标实现了接口,则采用JDK Proxy,否则采用Cglib。代理模式包括接口、真实类和代理类,以微信支付为例进行解释。接着详细介绍了JDK动态代理的四步实现过程和Cglib动态代理的创建方法。
摘要由CSDN通过智能技术生成

Aop的实现原理

Aop的实现是通过jdkProxy与cglib

  • 底层是由AopProxyFactory根据AdvisedSupport对象的配置来决定
  • 默认策略如果目标是接口,则用JDKProxy来实现,否则用后者
  • JDKProxy的核心是实现InvocationHandler接口和Proxy类
  • cglib:以继承的方式实现目标对象的代理

代理模式的理解

代理模式的实现为接口+真实类+代理类组成,如下例子由微信支付的代理模式实现过程
第一步:先定义一个支付接口payment

package com.bdcloud.proxy;

/**
 * 支付接口
 */
public interface Payment {
   
    public void pay();
}

第二步:定义真实支付类

package com.bdcloud.proxy;

/***
 * 真实的支付类
 */
public class RealPayment implements Payment {
   

    @Override
    public void pay() {
   
        System.out.println("我是用户,我只是使用了支付功能");
    }
}

第三步:定义代理类

package com.bdcloud.proxy;

/***
 * 微信支付代理类
 */
public class WeixinPaymentProxy implements Payment {
   

    private Payment payment;

    public WeixinPaymentProxy(Payment payment){
   
        this.payment = payment;
    }

    public void beforPayment(){
   
        System.out.println("从交行扣款");
    }

    public void afterPayment(){
   
        System.out.println("支付给具体商户");
    }
    @Override
    public void pay() {
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值