`

Spring学习之IOC/DI的诠释

 
阅读更多
在网上看到一篇对IOC和ID解释很好的文章,自己记录下,地址倒是忘记了,凭自己的记忆重新整理巩固一遍,好像我收藏了那篇文章了

IOC(Inversion of Control  控制反转
DI(Dependency Injection   依赖注入


之前对IOC/DI的理解就模棱两可,今天算有点理解了,从一下几个方面入手

控制:谁控制谁,控制ta的什么
反转:有反转应该就有正向,正向应该是怎样的
依赖:谁依赖谁,为什么需要依赖
注入:谁向谁注入,注入什么


关于以上四个问题涉及到的参与者是谁?

三方参与者:某一对象(任意的,普通的java对象),IOC/DI容器,对象所需的外部资源(另一对象,或者是文件资源等对象所需的,从外部获得的).

谁控制谁:IOC/DI容器控制对象

控制什么:控制对象的创建

谁依赖谁:对象依赖IOC/DI容器

为什么要依赖:需要IOC/DI容器提供对象所需的外部资源

谁向谁注入:IOC/ID容器像对象注入

注入什么:注入对象所需要的外部资源

正向和反转:
我们常规的编程,如果在A里面使用C,我们会在A中直接创建一个C对象.也就是在A
           中主动去获取所需的外部资源,这样的被称为正向!而反转就是A不需要主动的去
           创建C对象,而是被动的等待,等待IOC/DI容器获取C的实例,反向的注入到A中

所以控制反转和依赖注入是对同一件事情的不同描述,从某方面来讲,他们描述的角度不同.控制反转是站在容器的角度来讲,容器控制应用程序,反向的向程序中注入所需的外部资源.而依赖注入是站在程序的角度,程序依赖容器注入所需的外部资源!


其实这与工厂模式有点类似,如果A需要外部资源,自己不去创建,而是依靠工厂来创建

借用别人的总结:
   其实IoC/DI对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC/DI容器来创建并注入它所需要的资源了。
   这么小小的一个改变其实是编程思想的一个大进步,这样就有效的分离了对象和它所需要的外部资源,使得它们松散耦合,有利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

分享到:
评论

相关推荐

    使用Spring IOC/DI 模拟某超市管理功能

    (1)Product类(商品类):含id(商品编号)、proName(商品名称)、price(价格),并为所有属性生成get和set方法。 (2)Market类(超市类):含marketName(超市名称)、productArr(仓库,List集合) ...

    dijon, 在Javascript中,由Robotlegs和Swiftsuspenders激发的,ioc/di框架.zip

    dijon, 在Javascript中,由Robotlegs和Swiftsuspenders激发的,ioc/di框架 DIJON框架 Dijon是用于Javascript的IOC和DI微框架。 最初它是一个Robotlegs端口,但却偏离了一些完全不同的地方。 它仍然受到Robotlegs的...

    关于spring的AOP ,IOC,DI的理解

    Spring的AOP和IOC/DI使得代码更加模块化,降低了耦合,提高了可维护性和可测试性。AOP解决了交叉关注点的问题,让开发者专注于核心业务逻辑,而IOC和DI则通过容器管理对象的生命周期和依赖关系,使得代码更加灵活且...

    springIOC和DI

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

    Spring中IOC/AOP的说明和例子

    在Spring框架中,IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)是两个核心的概念,它们极大地提高了软件开发的灵活性和可维护性。 **IOC(控制反转)**是Spring的核心...

    jBeanBox是一个微形但功能较齐全的IOC/AOP工具,用于Java6或以上环境

    jBeanBox项目的定位:需要一个功能较全的IOC/AOP工具,但是又不想引入臃肿的Spring。 其它IOC/AOP工具的问题: Spring: 源码臃肿,Java方式的配置不灵活, 非单例模式时性能差。 Guice: 源码臃肿(200多个类),手工...

    马士兵Spring课堂笔记(超级详细版).pdf

    本资源主要讲解了Spring框架的基础概念和应用,涵盖了面向接口编程、IOC/DI、AOP、Spring应用IOC/DI、Spring应用AOP、Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合、Spring JDBC面向接口编程等内容。 面向接口...

    什么是Ioc和DI

    在实际应用中,DI通常作为IoC容器的一部分来实现,例如Spring框架中的BeanFactory或ApplicationContext,它们都提供了依赖注入的功能,从而帮助开发人员遵循IoC的原则,构建出更加灵活、可维护的软件系统。...

    Spring核心学习IOC部分

    在Spring框架中,IOC(Inversion of Control,控制反转)是其核心概念之一,它改变了传统应用程序中的对象创建和管理方式。本学习资料主要聚焦于Spring的IOC容器,特别是从最基本的BeanFactory开始,逐步深入理解...

    软通动力spring

    Spring 框架的核心基础 API 是基于 IOC/DI 思想,IOC 代表 Inverse Of Control 或者 控制反转,DI 代表 Dependence Injection 或者 依赖注入。IOC/DI 思想的主要作用是简化代码、降低对象之间的耦合度,提供系统...

    spring核心IOC以及DI

    【Spring核心IOC以及DI】是Spring框架中的关键概念,它们是Spring实现控制反转(Inversion of Control,简称IOC)和依赖注入(Dependency Injection,简称DI)的基石。这两个概念是Spring框架的核心,使得应用程序的...

    Spring-MyBatis-Ajax重点详解

    IoC/DI 容器、Spring 框架、MyBatis、Ajax 相关知识点总结 IoC/DI 容器是一种设计思想,意味着将设计好的对象交给 Spring 容器控制,而不是传统的在对象内部直接控制。IoC/DI 容器主要控制了外部资源获取(不只是...

    基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)

    基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)基于Cglib简单实现Spring体系(Ioc+Aop+Mvc)...

    Spring IOC AOP MVC 简单例子

    Spring框架是Java开发中不可或缺的一部分,它以模块化的方式提供了许多功能,如依赖注入(IOC)、面向切面编程(AOP)以及Model-View-Controller(MVC)架构模式。在本实例中,我们将深入探讨这三个核心概念以及它们...

    Spring IOC和DI实现原理及实例解析

    Spring IOC和DI实现原理及实例解析 Spring IOC(Inversion of Control,控制反转)是Spring框架的基础,它简单地说就是创建对象由以前的程序员调用new构造方法,变成了交由Spring创建对象。DI(Dependency Inject,...

    springIoc实现原理

    Spring Ioc(Inversion of Control,控制反转)是Spring框架的核心特性之一,它改变了传统应用程序中对象的创建和管理方式。在传统的软件设计中,对象的创建和依赖关系的维护通常由代码自身来完成,而在Spring Ioc中...

    day38 03-Spring的IOC和DI的区别

    标题中的"Spring的IOC和DI的区别"涉及到Spring框架的核心特性,即控制反转(Inversion of Control,简称IOC)和依赖注入(Dependency Injection,简称DI)。这两个概念是理解Spring框架工作方式的关键。 首先,控制...

    笔记28-JAVAEE之Spring IoC&DI

    JAVAEE之Spring IoC&DI Spring IoC(Inversion of Control,即控制反转)是Spring框架的核心机制之一,它提供了一种解耦合的方式,使得应用程序的各个组件之间能够松散耦合,提高了系统的灵活性和可维护性。 在传统...

    Ioc, DI demo

    一个典型的IoC/DI使用场景可能包括以下几个步骤: 1. 定义接口:首先,定义服务接口,这是类之间交互的方式。 2. 实现接口:接着,创建接口的实现类,提供实际的功能。 3. 注册服务:在IoC容器中注册接口和服务实现...

    在X++中使用IoC/DI模式应对不断变化的客户需求

    IoC/DI(InverseofControl/DependencyInjection,控制反转/依赖注入)模式是一种企业级架构模式,通过将应用程序控制权反转交移给框架,并以构造器注入、属性设置器注入等方式将类实体注入到特定应用层中,最终实现...

Global site tag (gtag.js) - Google Analytics