码迷,mamicode.com
首页 > 其他好文 > 详细

IOC及AOP实现原理

时间:2017-06-20 01:03:00      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:jdk   生成   glib   spec   内存   事务管理   系统   调用   服务   

IOC:由spring来负责控制对象的生命周期和对象间的关系,我们只需要关注业务对象即可,使用对象时直接注入即可。所有的类都会在spring容器中登记,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转

DI:系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过依赖注入

一般DI可以理解为IOC,DI其实就是IOC的另外一种说法

参考:https://www.ibm.com/developerworks/cn/java/j-lo-springaopcglib/

AOP:应用于处理一些具有横切性质的系统级服务,如事务管理、安全检查、缓存、对象池管理等,关键就在于代理,静态代理和动态代理

  静态代理:在编译阶段就可生成 AOP 代理类

  动态代理:运行时借助于 JDK 动态代理、CGLIB 等在内存中“临时”生成 AOP 动态代理类

AOP 专门用于处理系统中分布于各个模块(不同方法)中的交叉关注点的问题,,只要定义方法,无需在业务中显示调用,系统会自动执行该特殊方法

AspectJ :编译时增强,静态代理

Spring AOP:运行时增强,动态代理

进行 AOP 编程的关键就是定义切入点和定义增强处理,需手动修改方法,只要定义切入点即可

代理对象的方法 = 增强处理 + 被代理对象的方法

 

CGLIB(Code Generation Library);可以在运行时候动态是生成某个类的子类。

pring AOP 的根本所在:Spring AOP 就是通过 CGLIB 来动态地生成代理对象,这个代理对象就是所谓的 AOP 代理,

    而 AOP 代理的方法则通过在目标对象的切入点动态地织入增强处理,从而完成了对目标方法的增强。

CGLIB包的底层是通过使用一个小而快的字节码处理框架ASM(Java字节码操控框架),

IOC及AOP实现原理

标签:jdk   生成   glib   spec   内存   事务管理   系统   调用   服务   

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!