Spring框架的IOC理解

Spring框架的IOC理解

Spring的IOC容器其实是一种思想转变的开始。比如,我们以前的service层和dao层如果service需要调用dao的时候,我们就需要在service层里面创建dao的对象。这样类与类之间的联系就非常紧密,而联系紧密有什么不好的地方呢?

联系紧密就会导致我们需要修改代码非常难,非常复杂。举个例子如果service需要一个连接mysql的dao对象来完成对数据库里面数据的存储我们就需要在service层创建这个对象。万一我需要改成连接oracle数据库来得到数据呢?是不是就需要去到service层里面修改?
但是你以为service层只有一个类使用dao对象吗?不止吧,小项目里面都已经不止一个类了,更何况是大项目呢?

说到这里,这和IOC容器有什么关系?IOC到底有什么作用?IOC(Inversion of control)控制反转,控制什么?反转又是什么?这些都是需要我们来解答的问题

IOC容器之所以叫控制反转,实际上是IOC容器控制对象,它通过读取xml文件,配置类来获取对象的信息,然后通过反射来创建对象保存在容器里面管理。那么为什么说它是一个思想的转变呢?
关键就在于反转。反转对于我们的开发有什么样的好处?
我们程序员通常都是通过自己new对象来创建对象,修改对象,使我们在控制程序,程序主动的new出来一个对象。但是IOC容器就把这种主从的关系改变了,变成了容器来创建对象,注入属性,程序被动地接收对象。程序由主动变成了被动这有什么好处?
当然有很大的好处啦,我们原本是在业务层里面去new对象,现在变成了第三方来为我们new对象,不需要我们去管对象的创建,再联系到上层的简单例子。我们service层选择dao对象是不是就可以按需选择了,我们需要什么就可以在配置文件里面修改,其实这个时候我们就相当于客户,我们在通过第三方来与service进行一个简单的交互,告诉他我要连接什么数据库,想获取什么样的信息。而第三方就会自动分配对象,创建对象了。再想想如果我们自己手动去修改那得多累啊。
这种反转的思想,为各种自定义的功能提供了方便,我们可以利用它的这种动态,自定义程序的一些功能。

IOC容器还有一个重要的点就是依赖注入
什么是依赖?依赖就是我们程序所需要的外部资源,类似于service需要dao
什么是注入?注入其实就是通过IOC容器来把外部资源给程序设置好,就像是注射一样。
依赖注入的原理也是反射,是通过反射来为属性注入值的。依赖注入和IOC容器的关系,依赖注入是一个过程,是IOC容器实现的一种方式(如果有错希望大家指出)。
这是我对IOC的浅显理解。如果有问题欢迎一起交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值