代理模式(proxy)和spring AOP

1、代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。

2、在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

3、代理模式一般设计的角色有:
    1)抽象角色:声明真实对象和代理对象的共同接口。
    2)代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。
    3)真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。

4、代码示例:
    1)代码结构预览:
        
    2)抽象角色:
        
    3)代理角色:
        
    4)真实角色:
        
    5)客户端验证:
        
 
按照代理的创建时期,代理类可以分为两种。 
静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 
动态代理:在程序运行时,运用反射机制动态创建而成。 
    
以上是转载代理模式的实现,代理模式也是一种非常有用的设计模式,也许你会问,我怎么没用到过呢,其实Spring 实现AOP是依赖JDK动态代理和CGLIB代理实现的。
在编程的时候,只需要短短几行代码,就实现了对某一切面的操作,大大减少了我们的工作,这就是AOP的作用,底层其实代理模式,把对象的创建交给代理类去做。
 
学习AOP,其实每次使用,也就是那么一点配置,如果你没有特殊其他需求的话,也就是事务管理那一块,配置下就行了,不过他的功能可不知那么一点,深入学习的话,

以下是JDK动态代理和CGLIB代理简单介绍
    JDK动态代理:其代理对象必须是某个接口的实现,它是通过在运行期间创建一个接口的实现类来完成对目标对象的代理。
    CGLIB代理:实现原理类似于JDK动态代理,只是它在运行期间生成的代理对象是针对目标类扩展的子类。CGLIB是高效的代码生成包,底层是依靠ASM(开源的java字节码编辑类库)操作字节码实现的,性能比JDK强。 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值