您的位置:首页 > 编程语言 > Java开发

Spring AOP的实现策略与使用

2017-09-21 00:38 274 查看
1.AOP的实现策略

(1)Java SE动态代理:

    使用动态代理可以为一个或多个接口在运行期动态生成实现对象,生成的对象中实现接口的方法时可以添加增强代码,从而实现AOP。缺点是只能针对接口进行代理,另外由于动态代理是通过反射实现的,有时可能要考虑反射调用的开销。

(2)字节码生成(CGLib 动态代理)

    动态字节码生成技术是指在运行时动态生成指定类的一个子类对象,并覆盖其中特定方法,覆盖方法时可以添加增强代码,从而实现AOP。其常用工具是cglib。

(3)定制的类加载器

    当需要对类的所有对象都添加增强,动态代理和字节码生成本质上都需要动态构造代理对象,即最终被增强的对象是由AOP框架生成,不是开发者new出来的。解决的办法就是实现自定义的类加载器,在一个类被加载时对其进行增强。JBoss就是采用这种方式实现AOP功能。

(4)代码生成

    利用工具在已有代码基础上生成新的代码,其中可以添加任何横切代码来实现AOP。

(5)语言扩展

    可以对构造方法和属性的赋值操作进行增强,AspectJ是采用这种方式实现AOP的一个常见Java语言扩展。

我们重点关注JDK动态代理与CGLib动态代理

2.代理策略原理分析

Ⅰ. Java SE动态代理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: