预编译、运行期代理底层原理是什么?

来源:5-1 AOP基本概念及特点

610666618

2015-12-11 15:38

预编译、运行期代理底层原理是什么?

写回答 关注

1回答

  • RockenRoll
    2015-12-11 16:18:05
    已采纳

    在Spring 中,引入了AspectJ的语法,他本质上使用的是动态代理的方式.

    动态代理,分两种实现模式:

    1.使用接口(动态代理)

    如果被代理的对象是面向接口编程的,那么Spring直接使用实现这些接口,然后把需要插入的内容在这个接口上下文中插入

    2.使用继承(CGLIB)

    如果被代理的对象没有基于接口编程,那么Spring会调用cglib库,通过子类继承的方式,动态插入需要的内容,并且调用父类的方法实现

    cglib内部拥有一个小的字节码处理框架asm,来转换字节码生成新的类.所以spring调用了cglib,相当于生成了一个被代理对象的子类,来取代被代理对象.


    610666...

    非常感谢!

    2015-12-12 17:27:41

    共 1 条回复 >

Spring入门篇

为您带来IOC和AOP的基本概念及用法,为后续高级课程学习打下基础

268801 学习 · 1026 问题

查看课程

相似问题