SpringIOC和DI

今天学习了一下Spring的IOC和DI,现在将我的理解解释如下:

  IOC控制反转《inversion of Control》,这是Spring的核心,贯穿始终,所谓IOC对于Spring 框架来说,就是由Spring来控制对象的生命周期和对象之间的关系,这是什么意思呢,举个简单的例子,我们是如何找女朋友的,常见的情况是,我们导出去看哪里有长得漂亮身材又好的mm,然后我们通过各种方式去了解这个mm的兴趣爱好,QQ号码,微信号,电话号等等,想尽各种办法去认识他们,投其所好,然后嘿嘿嘿,,,,,,这个过程是复杂深奥的,其过程是必须自己设计和面对每一个环节。传统的程序开发也是如此,在一个对象中,如果要使用另外的对象,就必须要得到它,(自己new一个,或者是从JNDI中查询一个)使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类耦合起来。

   那么IOC是如何做的呢,有点像婚介所,比如说我们要找女朋友,婚介所有好多找男朋友的女生的资料,我们只需要把我们的要求告诉婚介所,那么婚介所按照我们提的要求会给我们去给我们匹配一个mm,而我们就只需要和这个mm谈恋爱,然后结婚,然后嘿嘿。。。。这样简单明了,如果说婚介所给我们介绍的不符合我们的要求,那么我们只需要抛出一个异常,然后由婚介所这个容器去处理,过程不由我们控制了,由婚介所这样的容器去管理。Spring所倡导的开发的方式就是如此,所有的类都必须要在Spring容器中进行登记,你只需要告诉Spring,你是什么东西,你需要什么东西,然后接下来Spring在合适的时候,会将你需要的东西给你,然后你将会被给到别人需要你的地方,所有的类的创建,类的销毁,都是由Spring来控制,也就是说,控制对象生命周期的不再是引用它的对象了,而是Spring。对于某个具体的对象而言,以前是由它来控制其他的对象,现在都是由Spring来控制,这就是所谓的控制反转。

IOC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他的对象,这一点是通过DI(Dependency Injection ,依赖注入)来实现的,比如说对象A需要操作数据库,以前我们总是要在A中写自己编写代码来获得一个Connection对象,有了Spring我们就只需要告诉Spring,A中需要一个Connection,治愈这个Connection怎么构造,何时构造,A不需要知道。在系统运行的时候,Spring会在适当的时候制造一个Connection,然后像打针一样注射到A当中,而这个Connection是由Spring注入到A中的,依赖注入的名字就是这么来的。那么,DI是如何实现的呢?Java1.3之后一个重要的特征是反射,(reflection),它允许程序在运行的时候动态的生成对象,执行对象的方法,改变对象的属性,Spring就是通过反射来实现注入的。


当看博客的时候,有了新的发现,忘掉了以下内容:

Spring依赖注入有三种方式:(dependence injection)

第一种:接口注入(Interface injection)

第二种:get/set方法注入(set/get injection)

第三种:构造器注入(Constructor injection)

三种注入方式的区别:

接口注入(Interface injection):组件需要依赖特定的接口的实现, 其中的加载接口实现,和接口实现的具体对象都是由容器来完成的,这样接口必须要依赖容器,这样的组件具有侵入性,降低了重用性。

get/set方式注入(get/set injection):对于需要注入的东西比较的明确,符合java设计规则,更适合 java 开发人员,使用起来更加自然,更加方便。

构造器注入(Constructor injection):在类加载的时候,就已经注入依赖的组件,但是如果参数比较多的时候使用起来不是很方便。

但是get/set方式的注入和构造器的注入是Spring中经常使用的两种的注释方式,接口注入方式不怎么使用。








  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值