分析Spring AOP的动态代理实现原理

很多项目中都使用了Spring,Spring的特性有IOC和AOP,其他IOC为控制反转,实现的效果是将创建对象的权力分配给容器,我们只需要向容器中取对象,本文将分析Spring AOP的特性

(1)Spring AOP在开发中可以帮助我们实现什么功能?

1) 记录日志

2) 统一处理异常

3) 权限限制

4) 方法消耗时间监控

5) ….

(2)为什么要使用AOP?优点在哪里,缺点在哪里?

优点包括:减少业务复杂度、易维护、易扩展,如果这里把业务流程看做纵向,那么AOP则为横向,满足OOP的不足之处

缺点包括:基于反射因此性能慢,动态生成的反射类会存入JVM中的方法区,方法区如果内存不足则会引发FULL GC,FULL GC会引其系统停顿服务直到结束,如果回收后空间依然不够则会引发OOM异常

(3)Spring使用AOP步骤?

1)扫描并标识通过Annoation或者XML被代理的类

2)通过上述类区分,分别获取它们的接口

3)获取实现InvocationHandler的实现类

4)在内存中生成代理类

5)为代理类创建对象交给Spring容器管理

此时当在程序中注入被代理的对象实际上是代理的对象

参考文章:[url]http://kiral.iteye.com/blog/1198982[/url]

    原文作者:AOP
    原文地址: https://blog.csdn.net/Program_newbie/article/details/84153198
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞