AOP面向切面编程-静、动态代理实现

本文介绍了面向切面编程(AOP)中的静态代理和动态代理技术。静态代理虽然能实现方法扩展,但需针对每个方法进行修改。JDK动态代理通过Proxy.newProxyInstance创建代理对象,降低耦合,但要求目标对象实现接口。CGLIB动态代理则解决了此限制,适用于未实现接口的目标对象,通过MethodInterceptor进行方法拦截。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

动态代理主要作用为,在原有方法的功能上,通过不修改目标对象的代码情况下,对原有方法的功能进行横向扩展。

原生扩展调用

原生方法的调用需要对代码进行修改,从而达到拦截的作用,修改复杂且耦合性较高

/**
 * 正常调用纵向扩展
 */
public abstract class AbstractNativeService {
    public abstract void info();
    public abstract void info2();

    public void aspectInfo(){
        System.out.println("before info");
        this.info();
        System.out.println("after info");
    }

    public void aspectInfo2(){
        System.out.println("before info2");
        this.info2();
        System.out.println("after info2");
    }
}

public class NativeService extends AbstractNativeService {
    @Override
    public void info() {
        System.out.println("info 1");
    }

    @Override
    public void info2() {
        System.out.println("Info 2");
    }
}

以下会通用该接口

public interface Func
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值