【无标题】

Spring:IOC、DI、AOP



前言

  随着Spring在Java企业开发中的更多应用,其核心原理的理解也更为重要,
本文介绍了基本的Spring相关名词性概念:IOC、DI、AOP。

一、 什么是IOC容器?

  实际上就是一个map,里面存放各种对象,在项目启动的时候会
读取配置文件里面的bean节点,根据全限定类名使用反射创建对象
放入map、扫描到打上相关注解的类仍通过反射创建对象放到map中。

  map里的对象需要通过依赖注入,从而使得对象具有属性。

二、什么是控制反转?

  没有引入IOC容器之前,对象A依赖于对象B,那么对象A在初始化或者
运行到某一点时,自身必须主动去创建对象B或者使用已创建的对象B,
控制权在对象A上。

  引入了IOC之后,对象A和B之间失去了直接联系,当对象A运行到需要对象B
之时,IOC容器会主动去创建一个对象B的实例,并注入到对象A需要的地方。

  通过这样的对比,不难看出:对象A获取依赖对象B的过程,由主动行为变成了
被动行为,控制权颠倒过来了,这就是控制反转。

  全部对象的控制权上全部上交给了第三方IOC容器,IOC容器作为整个系统的关键核心,
起到了一种类似于“粘合剂”的作用,把系统中所有对象粘合到一起发挥作用,没有一个
粘合剂那么对象之间就会完全失去联系。

三、如何理解依赖注入(DI)?

  获得依赖对象的过程被反转了,控制被反转之后,获得依赖对象的过程
由自身管理变成了由IOC容器的主动注入,依赖注入是实现IOC容器的
方法,即:IOC容器在运行期间,动态地将某种依赖关系主动地注入到
对象之中,而非对象主动去创建。

四、什么是AOP?

  系统是由许多不同的组件组成的,每一个组件负责一块特定的区域,
除了实现自身核心功能之外,这些组件还要承担其他的职务:如日志、
事务管理和安全、异常处理等方面,但这些核心服务经常融入到了自身
具有核心业务逻辑的组件中去,这些系统级服务被称为横切关注点,因为
它们会横跨系的多个组件。

  当我们需要为分散的对象引入公共的行为之时,OOP显得无力,因为OOP
允许定义从上到下的关系,但不适合定义从左到右的关系(日志)。

  在OOP当中这导致了大量的代码重复,不利于各个模块的复用。

  而AOP可以将程序中的交叉业务逻辑(安全、日志、事务等),封装成
一个切面,然后注入到目标对象(具体业务逻辑)中,可以对某一些对象
的功能进行增强,在某个方法前后做更多的事情。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值