`

[摘]spring-IoC与DI

阅读更多

摘自:  http://blog.sina.com.cn/s/blog_4c09cde7010007va.html

IoC与DI
 IoC(Inversion of Control,控制倒转)。这是spring的核心,贯穿始终。所谓IoC,对于 spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。
   这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱好、qq号、电话号、ip号、iq号………,想办法认识她们,投其所好送其所要,然后嘿嘿……这个过程是复杂深奥的,我们必须自己设计和面对每个环节。传统的程序开发也是如此,在一个对象中,如果要使用另外的对象,就必须得到它(自己 new一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来。
  那么IoC是如何做的呢?有点像通过婚介找女朋友,在我和女朋友之间引入了一个第三者:婚姻介绍所。婚介管理了很多男男女女的资料,我可以向婚介提出一个列表,告诉它我想找个什么样的女朋友,比如长得像李嘉欣,身材像林熙雷,唱歌像周杰伦,速度像卡洛斯,技术像齐达内之类的,然后婚介就会按照我们的要求,提供一个mm,我们只需要去和她谈恋爱、结婚就行了。简单明了,如果婚介给我们的人选不符合要求,我们就会抛出异常。整个过程不再由我自己控制,而是有婚介这样一个类似容器的机构来控制。Spring所倡导的开发方式就是如此,所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。如果你还不明白的话,我决定放弃。
  IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。
这一点是通过DI(Dependency Injection,依赖注入)来实现的。
它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性.
比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖Connection才能正常运行,而这个Connection是由spring注入到 A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢?Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。关于反射的相关资料请查阅javadoc。
  理解了IoC和DI的概念后,一切都将变得简单明了,剩下的工作只是在spring的框架中堆积木而已。
分享到:
评论
1 楼 yw404109794 2009-08-01  
楼主说得很形象啊!

相关推荐

    spring-demo02-IOC-DI案例.zip

    Spring 框架是 Java 开发中不可或缺的一部分,它以其强大的依赖注入(Dependency Injection, DI)和控制反转(Inversion of Control, IOC)特性而闻名。在这个名为“spring-demo02-IOC-DI案例”的压缩包中,我们将...

    maven-spring-ioc

    Spring框架是Java开发中的一个核心组件,它提供了许多功能,其中最重要的一项就是Inversion of Control(IoC),也称为Dependency Injection(DI)。IoC容器是Spring的核心,它负责管理对象的生命周期和对象间的依赖...

    Spring-IOC实现

    - 虽然不是IOC直接的一部分,但AOP是Spring框架的另一个重要特性,常与IOC一起使用。它允许我们定义横切关注点,如日志、事务管理等,以解耦业务逻辑。 10. **测试支持** - Spring提供了测试支持,如@Test注解的...

    Spring-IOC实例

    IoC,也被称为依赖注入(Dependency Injection,DI),是一种设计模式,它将对象的创建和管理权从代码中分离出来,交由Spring容器来负责。这样可以降低代码间的耦合,提高可测试性和可维护性。本文将深入探讨Spring-...

    Spring-IOC丐版

    Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入(Dependency Injection,简称DI)和控制反转(Inversion of Control,简称IOC)特性而闻名。在这个名为"Spring-IOC丐版"的项目中,我们将深入探讨...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘3.zip

    018-spring-ioc-ioc和di理解.mp4 019-spring-ioc-IoC实践基本步骤.mp4 020-spring-ioc0基于xml的ioc的配置.mp4 021-spring-ioc-基于xml的di配置.mp4 022-spring-ioc-基于xml的ioc容器的创建.mp4 023-spring-ioc...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘4.zip

    018-spring-ioc-ioc和di理解.mp4 019-spring-ioc-IoC实践基本步骤.mp4 020-spring-ioc0基于xml的ioc的配置.mp4 021-spring-ioc-基于xml的di配置.mp4 022-spring-ioc-基于xml的ioc容器的创建.mp4 023-spring-ioc...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘2.zip

    018-spring-ioc-ioc和di理解.mp4 019-spring-ioc-IoC实践基本步骤.mp4 020-spring-ioc0基于xml的ioc的配置.mp4 021-spring-ioc-基于xml的di配置.mp4 022-spring-ioc-基于xml的ioc容器的创建.mp4 023-spring-ioc...

    2023版全新SSM框架实战精讲 视频教程 下载下载 因为太大存百度云盘1.zip

    018-spring-ioc-ioc和di理解.mp4 019-spring-ioc-IoC实践基本步骤.mp4 020-spring-ioc0基于xml的ioc的配置.mp4 021-spring-ioc-基于xml的di配置.mp4 022-spring-ioc-基于xml的ioc容器的创建.mp4 023-spring-ioc...

    Spring--IOC

    总结起来,Spring的IOC和DI理念极大地简化了Java应用的开发,通过将对象的创建和管理交由Spring容器,我们可以更专注于业务逻辑,而MyEclipse5.5这样的开发工具则进一步提升了开发效率。了解和掌握这些知识点,对于...

    Spring-IoC-DI-main

    标题“Spring-IoC-DI-main”提示我们讨论的核心是Spring框架中的两个核心特性:控制反转(Inversion of Control, IoC)和依赖注入(Dependency Injection, DI)。这两个概念是Java开发中的重要基石,尤其在构建大型...

    Spring----IOC实现

    8. **AOP(面向切面编程)**:虽然不是IOC的直接部分,但AOP是Spring框架的重要特性,常与IOC一起使用。它允许我们在不修改业务代码的情况下,添加如日志、事务管理等横切关注点。 9. **Spring Boot**:现代Spring...

    springIOC和DI

    什么是spring,spring核心,spring优点,spring体系结构, 入门案例,DI基础,核心API,文档内附代码

    Spring-IoC 复习笔记.rar

    Spring 框架是 Java 开发中不可或缺的一部分,其核心特性之一就是依赖注入(Dependency Injection,简称 DI),也称为控制反转(Inversion of Control,简称 IoC)。IoC 是一种设计模式,它允许我们通过外部配置来...

    spring-IOC代码

    **Spring IOC(控制反转)深度解析** 在Java开发领域,Spring框架因其强大的功能和灵活性而备受推崇,其中的核心概念就是IOC(Inversion of Control,控制反转)。本文将深入探讨Spring IOC,以及它如何通过容器来...

    Java开发学习(二)----IOC、DI入门案例.doc

    在Java开发中,Spring框架的核心特性之一就是Inversion of Control(IoC,控制反转)和Dependency Injection(DI,依赖注入)。这两个概念是紧密相关的,理解它们有助于提升应用的可扩展性和模块化。 **IOC(控制...

    Spring-IoC 容器 - v1.01

    IoC的一个常见实现是依赖注入(Dependency Injection,简称DI),它允许对象之间的依赖关系在运行时动态地被管理和配置,而不是由对象自己来创建或查找其依赖。 **设计用户持久化类** 设计用户持久化类通常涉及...

    spring-context-3.2.0 spring-core-3.2.0 等齐全的Spring jar包

    1. **spring-core-3.2.0.RELEASE.jar**:这是Spring框架的核心模块,提供了基本的IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)功能,以及资源加载和通用工具类。 2. **spring-...

    coco-spring-ioc

    其中,Spring的核心组件之一就是IOC(Inversion of Control,控制反转)容器,它实现了依赖注入(Dependency Injection,DI),使得组件之间的耦合度大大降低,提高了代码的可维护性和可测试性。本文将围绕“coco-...

    spring练习项目.7z

    资料包含spring-iocdi-annotation-document,iocdi-annotation-mvc,iocdi-xml-extend,iocdi-annotation-extend proxy,jdkproxy-transaction,jdkproxy-salary,day02-itheima11-spring-08-cglibproxy,day02-itheima11-...

Global site tag (gtag.js) - Google Analytics