Spring的Ioc(控制反转)和DI(依赖注入)

来源:互联网 发布:广电总局 网络综艺 编辑:程序博客网 时间:2024/06/01 09:09


       接触完Struts后,开始接触spring,struts在我们的mvc模式中是c就是控制器模块,负责与javabean和页面之间进行交互,所以一接触到spring的Ioc和DI时,脑海中立马想的是spring是不是就是mvc中的m即model呢?

        然而看了spring的文档后,发现它的强大不仅仅只有m(model)模块这么简单,它很庞大,功能也很多,今天就先对它其中的两个很重要的思想做个学习总结和交流之用。

        Ioc:    控制反转

                  猛的一看这个名词觉得好难理解,控制反转?到底是什么意思?

                 Ioc就是Inversion of Control,大家知道,在程序中,对象的创建是是通过new 一个类名来实现的,而我们的spring的Ioc是一种应用控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用,传递给它。也可以说,依赖被注入到对象中。所以,控制反转是,关于一个对象如何获取他所依赖的对象的引用,这个责任的反转。也就是说,对象不是由自己new 自己来创建了面,而是由一个调控系统内所有对象的外界实体来创建对象将引用传递出来。在spring中这句代码就是体现:   

               ApplicationContext ac = new ClassPathXmlApplicationContext(new String[] { "beans.xml" });       

                 <bean id="s" class="com.yc.bean.TestSpring2.MybatisDao"> </bean>  

              对象用xml文件中的bean来表示,通过ApplicationContext  来获得这个xml文件中相应的里面对象 的引用,起初我在想,这样不是更麻烦吗?明明简单的创建一个对象,却要用xml文件来表示。但是想到现在的j2ee应用的庞大之处,像这种冗余的对象的创建是很耗费时间的,我们的spring对这种对象的创建进行了很好的封装,我们创建的对象是单例的,用的时候只需要调用它的引用即可,在大型项目中会省去我们好多的资源和冗余代码。简单的说它就是对象由容器创建的一个过程。

     DI:依赖注入

          在技术上来讲,依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念。具体含义是:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在Spring里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者实例的工作通常由Spring容器来完成,然后注入调用者,因此也称为依赖注入。

0 0
原创粉丝点击