很多项目中都使用了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]
(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]