目录

1. 什么是IOC

2. IOC容器的底层原理

① dom4j解析xml文档;

② 工厂模式;

③ 采用反射设计模式创建对象

3.上边提到的三种技术如何实现IOC的呢?

第一步:xml配置文件,配置创建对象

第二步:创建工厂类

第三部:IOC(接口)


1. 什么是IOC

IOC -- Inverse of Control,控制反转,将对象的创建权力反转给Spring框架

在java当中一个类想要使用另一个类的方法,就必须在这个类当中创建这个类的对象,那么可能会出现如下情况, 比如A类当中创建着B对象,B类当中有C对象,C类当中有A对象,这个如果一个类出了问题,那么可能会导致这个框架出现问题。 Spring 将创建对象的权利给了IOC,在IOC当中创建了ABC三个对象,那么我们我们其他的类只需要调用集合, 大大的解决了程序耦合性的问题。

控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。

解决问题:使用IOC可以解决程序耦合性高的问题。

就相当于齿轮。

2. IOC容器的底层原理

① dom4j解析xml文档;

② 工厂模式;

③ 采用反射设计模式创建对象

我们需要讲一下工厂模式

在当前情况之下A类想要调用B类就必须自己在自己的内部新建B类的对象,这样的耦合度太高,那我们如何降低耦合度的呢?

创建一个工厂类,这样就能够使得A和B的耦合度降低到最小值

3.上边提到的三种技术如何实现IOC的呢?

第一步:xml配置文件,配置创建对象

<bean id="demo" class="com.qcby.service.Demo" />

第二步:创建工厂类

public class DemoFactory {public static Demo getDemo() throws Exception {//利用dom4j得到name所对应的value值String value="class路径";//通过反射创建对象Class clazz = Class.forName(value);//返回并创建demo对象return (Demo) clazz.newInstance();}
}

通过以上两步,我们基本上就可以得到我们所创建的对象。

第三步:IOC(接口)

通过以上两步,我们基本上就可以得到我们所创建的对象。

(1) BeanFactroy:加载配置文件的时候不会去创建对象,在使用对象的时候才会去创建对象

(2)ApplicationContext:BeanFactory接口的子接口,提供了更多更强大的功能,一般由开发人员进行使用

加载配置文件的时候会把对象创建

下面有用IOC完成创建对象的文章:

用SpringIOC完成helloworld_何妨徐行的博客-CSDN博客

什么是Spring IOC容器相关推荐

  1. 头条一面:Spring IOC容器中只存放单例Bean吗?

    最近,很多小伙伴出去面试,感觉自己面的不是很理想,回来后,不少小伙伴把面试题做了记录发给我,让我给大家解析下,然后发出来.当我看到这些面试题时,快速在脑海中构建起了整个知识体系,从基础到框架.从分布式 ...

  2. Spring点滴一:Spring Ioc 容器

    Spring 容器: Spring 容器是Spring框架的核心.Spring容器将创建Bean对象实例,把它们联系在一起,配置它们,并管理它们整个生命周期从创建到销毁.Spring 容器通过依赖注入 ...

  3. MyEclipse Spring 学习总结一 Spring IOC容器

    一.Spring IOC容器---- Spring AllicationContext容器 程序的结构如下: 1.首先在MyEclipse 创建创建Java Project 2.创建好后,添加spin ...

  4. Spring IOC 容器源码分析系列文章导读

    1. 简介 前一段时间,我学习了 Spring IOC 容器方面的源码,并写了数篇文章对此进行讲解.在写完 Spring IOC 容器源码分析系列文章中的最后一篇后,没敢懈怠,趁热打铁,花了3天时间阅 ...

  5. Spring IOC 容器源码分析 - 余下的初始化工作

    1. 简介 本篇文章是"Spring IOC 容器源码分析"系列文章的最后一篇文章,本篇文章所分析的对象是 initializeBean 方法,该方法用于对已完成属性填充的 bea ...

  6. Spring IOC 容器源码分析 - 填充属性到 bean 原始对象

    1. 简介 本篇文章,我们来一起了解一下 Spring 是如何将配置文件中的属性值填充到 bean 对象中的.我在前面几篇文章中介绍过 Spring 创建 bean 的流程,即 Spring 先通过反 ...

  7. Spring IOC 容器源码分析 - 循环依赖的解决办法

    1. 简介 本文,我们来看一下 Spring 是如何解决循环依赖问题的.在本篇文章中,我会首先向大家介绍一下什么是循环依赖.然后,进入源码分析阶段.为了更好的说明 Spring 解决循环依赖的办法,我 ...

  8. Spring IOC 容器源码分析 - 创建原始 bean 对象

    1. 简介 本篇文章是上一篇文章(创建单例 bean 的过程)的延续.在上一篇文章中,我们从战略层面上领略了doCreateBean方法的全过程.本篇文章,我们就从战术的层面上,详细分析doCreat ...

  9. Spring IOC 容器源码分析 - 创建单例 bean 的过程

    1. 简介 在上一篇文章中,我比较详细的分析了获取 bean 的方法,也就是getBean(String)的实现逻辑.对于已实例化好的单例 bean,getBean(String) 方法并不会再一次去 ...

  10. Spring IOC 容器源码分析 - 获取单例 bean

    1. 简介 为了写 Spring IOC 容器源码分析系列的文章,我特地写了一篇 Spring IOC 容器的导读文章.在导读一文中,我介绍了 Spring 的一些特性以及阅读 Spring 源码的一 ...

最新文章

  1. 一文读懂RocketMQ的存储机制
  2. JAVA常用基础知识点[继承,抽象,接口,静态,枚举,反射,泛型,多线程...]
  3. SQLite 运算符(http://www.w3cschool.cc/sqlite/sqlite-operators.html)
  4. flume linux 命令,Linux环境Flume安装配置及使用
  5. 小程序入门学习21--springboot之后端各接口开发
  6. 嘉兴市计算机技工学校,嘉兴市高级技工学校2021年招生简章
  7. 如何用c语言调用c++做成的动态链接库
  8. 并发-2-Thread和Runnable的API
  9. spring-第五篇之spring容器中的bean
  10. GPU+Cuda8.0+cudnn8+OpenCv2.4.13+Caffee 安装教程嘎嘎
  11. Linux内核编程11期:设备树(device tree)
  12. jeesit 可以用俩种导出
  13. golang 爆破破解 rar5 压缩文件密码
  14. 计算机键盘的大写键,Win10系统键盘大小写切换键(Caps Lock)失灵了如何解决
  15. 目标检测—基于Yolov3的目标检测项目实战(学习笔记)
  16. Imagenet数据集1000类别中英文
  17. 压力测试-Jmeter脚本录制方案
  18. CSDN联合安恒信息 共同发布安全开发工程师能力标准
  19. 今天给同学写5个数据结构算法的题...感觉很有价值的几个题..感兴趣的坐下。。
  20. ipad1无法安装应用程序_如何在iPad上的应用程序之间拖放

热门文章

  1. 电脑重启bootmgr_怎么处理开机出错提示bootmgr image is corrupt
  2. Lottie--前端动画效果--UI输出json格式--lottie动画在JavaScript中使用
  3. 实时聊天软件常用架构
  4. 【CEGUI】CEGUI入门篇之初始化(一)
  5. 启动VMware Workstation出现问题W32 Authconnectionlaunch :回复错误 Process creation failed
  6. 115一直正在连接服务器失败怎么办,TCP连接错误115正在进行操作原因是什么?
  7. linux处理带空格文本,linux shell 处理带空格的文字
  8. 使用hibernate的validator时提示java.lang.NoClassDefFoundError: com/fasterxml/classmate/TypeResolver
  9. 更好的子表单数据填充方式
  10. 图像算法所用软件下载汇总