面试官:谈谈自己对IOC和AOP的理解? Part1

IOC(Inversion of control):即控制反转(反转控制)(具体含义后面会讲)。它是一种控制思想而不是一种技术,DI是它的实现方式之一。描述的是:Java对象的创建及管理问题。

首先:我们在开发中会面临一个问题。那就是对象之间的高度耦合。就比如三层架构中Service层用用Dao层,就必须通过在自己内部new一个Dao层对象出来,那么问题来了:如果Dao层的实现类发生更改,那就得修改Service层的实现类对象,这就属于硬编码了,就是因为通过new这种方法,两层架构之间的耦合度太高。如果你要说一个实现类说改也就改了,那么如果20个,30个呢?所以IOC出现了,IOC不通过new关键字来创建对象,而是通过IOC容器(spring框架)来帮助我们实例化对象,我们需要哪个对象直接去取就行(前提要进行bean的定义),IOC相较于传统方式(new)来说,丧失了创建,管理对象的权利,所以当我们需要使用对象的时候,直接取就行,拿上述问题来说,我们不需要修改源码,直接依赖注入即可。

那什么是控制反转呢?

控制:Java对象的创建和管理权利。

反转:将本属于我们的上述权利反转交给IOC容器

这是极为方便的,因为在实际开发中,我们并不需要关心对象的创建,我们只需要做一个衣来伸手,饭来张口的小fw就行,需要什么,直接从IOC中拿来用就行。所以IOC降低了对象之间的耦合度,使资源变得容易管理。

既然说到了IOC,那就必须得提一下DI!!!

DI(Dependency Injection):即依赖注入,由容器动态的将某个依赖关系注入到组件当中。依赖注入的目的并非为软件系统带来更多的功能,而是提升了组件重用的频率,并未软件系统搭建一个灵活,可扩展的平台。IOC会动态的向某个对象提供他所需要的对象,这一点就是通过DI实现的,通俗来讲,我们向IOC容器索取我们需要的对象,那IOC容器就会通过DI给我们。那DI是如何实现的呢?反射(以后会讲)

所以IOC是一种思想,而DI是一种技术或实现方式。

下一篇我们来聊一聊AOP,参考JavaGuide。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值