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() {