IOC(DI):java程序员都知道:java程序中的每个业务逻辑 至少需要两个或以上的对象来协作完成,通常,每个对象在使用他的合作对象时,自己均要使用像new object() 这样的语法来完成合作对象的申请工作。你会发现:对象间的耦合度高了。而IOC的思想是:Spring容器来实现这些相互依赖对象的创建、协调工作。对象 只需要关系业务逻辑本身就可以了。从这方面来说,对象如何得到他的协作对象的责任被反转了(IOC、DI)。

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就是通过反射来实现注入的。关于反射的相关资料请查阅java doc。

原文链接 http://blog.csdn.net/it_man/article/details/4402245

转载于:https://www.cnblogs.com/xmyclass/articles/4651547.html

spring ioc原理相关推荐

  1. spring ioc原理分析

    spring ioc原理分析 spring ioc 的概念 简单工厂方法 spirng ioc实现原理 spring ioc的概念 ioc: 控制反转 将对象的创建由spring管理.比如,我们以前用 ...

  2. Spring Ioc原理解析

    Spring Ioc原理解析 IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦 ...

  3. Spring Ioc原理及解析

    IOC简介 IoC是Inversion of Control的缩写,多数书籍翻译成"控制反转",还有些书籍翻译成为"控制反向"或者"控制倒置" ...

  4. Spring IOC 原理

    Spring IOC原理 IOC理解 自己写的简单的IOC容器 IOC的原理 定位.加载.注册 基于XML配置的IOC容器初始化 1.寻找入口 2.获取配置路径 3.开始启动 4.创建容器 5.载入配 ...

  5. Spring IOC 原理解析

    Spring IOC 原理 ? IOC DI(依赖注入) **DI注入的几种方式** IOC容器 IOC原理 要想理解IOC,就需要知道一下IOC.DI 和IOC容器都是干什么的 IOC spring ...

  6. 解析Spring IOC原理——工厂模式与反射机制的综合应用

    (一)工厂模式 从一个例子开始讲起: 首先我们建立一个Chinese.java类,该类的sayHelloWorld(String name)方法,用中文对名为name的人问好,其内容如下: [java ...

  7. spring ioc原理解析

    概述 Spring IOC控制反转,分为两个方面解释: 控制:对象对于内部成员的控制 反转:将之前对象管理自己内部成员,转变为ioc容器管理,目的是接耦 IOC的好处是: 无需手动创建,拿来就用 享受 ...

  8. Spring IOC原理总结

    Spring容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系 ...

  9. spring ioc原理_这70 道Spring高频面试题,你不好奇吗?

    对于面试来说,Spring是必问知识.如何了解和掌握核心内容呢? 这里总结打磨了 70 道 Spring 相关面试题,有的很基础,有的很细节,大家可以评估一下自己掌握的情况. Spring 重点要掌握 ...

  10. spring ioc原理_干了5年的Java面试官,把他喜欢问的几十个Spring面试题告诉我了

    前言: Spring 框架知识是互联网公司面试必考知识点.对于开发同学来说,Spring 框架熟悉又陌生. 熟悉:开发过程中无时无刻不在使用 Spring 的知识点:陌生:对于基本理论知识疏于整理与记 ...

最新文章

  1. 区块链技术是否会终结开源时代?
  2. ubuntu下安装redis
  3. ncbi查找目的基因序列_使用NCBI设计qPCR引物方法
  4. 10个常见的Redis面试刁难问题--转
  5. 1、MySQL约束概述
  6. 分布式是写出来的(一)
  7. 16产品经理需要具备的做事能力
  8. B样条曲线介绍和实现(等值线平滑)
  9. 推推:产品的规划和商业化分析
  10. 微信公众号文章采集的几种方案
  11. SpringMVC-狂神笔记
  12. 图片自适应手机屏幕大小
  13. 构建前端项目及使用技术
  14. 创建虚拟机步骤以及开启电脑虚拟设置方法
  15. 50道mysql笔试题目及答案_2020年MySQL数据库面试题总结(50道题含答案解析)
  16. MFC下载网页简单实现
  17. velocity模板大小写转换
  18. 教你如何暴力破解wifii密码
  19. 2020考研初试经验贴
  20. CheckStyle:Checks之标准Checks

热门文章

  1. 3D Render pictures
  2. 2011年的MVP礼包
  3. node搭建服务器,写接口,调接口,跨域
  4. apache的产品分类说明
  5. 阿里云天池 Python训练营Task2: Python基础练习:数据结构大汇总 学习笔记
  6. jQuery禁止Ajax请求缓存
  7. Windows平台下kafka环境的搭建
  8. python入门(5)使用文件编辑器编写代码并保存执行
  9. [题解]RQNOJ PID85 三个袋子
  10. eclipse maven scm