博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOC及AOP实现原理
阅读量:5165 次
发布时间:2019-06-13

本文共 1225 字,大约阅读时间需要 4 分钟。

IOC实现原理:http://blog.csdn.net/it_man/article/details/4402245

spring通过加载我们配置文件,将配置信息保存的Map里!!!!!key是bean id ,value是 这个对象!!!实例化一个类时,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中

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 动态代理类

通知(Advice)的种类 : Before(前置通知)  AfterReturning(后置通知) AfterThrowing(异常通知) After(最终通知) Around(环绕通知)

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

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

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

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

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

 

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

Spring AOP 的根本所在:Spring AOP 动态选择使用JDK代理还是CGlib代理,代理类实现接口就用JDK,否则就用CGLIB 来动态地生成代理对象,这个代理对象就是所谓的 AOP 代理,

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

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

转载于:https://www.cnblogs.com/team42/p/7051289.html

你可能感兴趣的文章
js控制只能输入数字
查看>>
Filter in Servlet
查看>>
HDU4662(SummerTrainingDay03-B)
查看>>
JavaScript基础——定义变量
查看>>
MySql避免重复插入记录
查看>>
Linux--SquashFS
查看>>
日期函数
查看>>
Mongodb 学习笔记7:复制
查看>>
html总结(一)
查看>>
指针数组和数组指针,指针函数和函数指针
查看>>
Numpy学习笔记
查看>>
SQL语句中截取字符串Substr
查看>>
DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录
查看>>
Application Pool Identities
查看>>
Codeforces 938C - Constructing Tests
查看>>
8.2 文件输入输出
查看>>
多用户磁盘管理 - lvm + quota
查看>>
Nginx服务编译安装、日志功能、状态模块及访问认证模式实操
查看>>
2017-3-24 开通博客园
查看>>
【MySQL性能优化】MySQL常见SQL错误用法
查看>>