IOC控制反转

2023-11-03

IOC控制反转

核心思想:控制反转思想的核心就是把对象的控制权的“反转”(对象的控制权包括对象的创建、管理、调用等。在对象的生命周期的各个阶段进行相应的管理),由编码人员交还给“程序本身”去管理,这屏蔽了对象创建和管理等过程,使得程序员可以将精力聚集在更高层的逻辑上。IOC底层运用Java“反射”原理实现。

控制权的“反转”:
在这里插入图片描述

使用IOC思想进行编码的好处:控制反转可以将对象的创建和管理从程序内部,剥离开到程序外部,当程序运行需要时由“外部”提供。这个控制权的“反转”的这个过程,实现了程序的解耦合,降低了各个模块间的紧密度,避免在修改时“牵一发而动全身”,降低了程序的修改和管理成本。

降低各个模块之间的依赖:
在这里插入图片描述

spring对IOC思想的实现:spring使用“IOC容器”去对对像的各个生命周期进行相应管理。所谓的容器完成了从编码人员手中接过对象的控制权,帮助我们实在对象的管理。获取“IOC容器”的方法有两种,BeanFactory和ApplicationContext。BeanFactory是获取容器的根接口,ApplicationContext继承于BeanFactory。

继承关系:
在这里插入图片描述

1、BeanFactory接口面向spring内部,是框架本身使用的接口。
spring官方对他的描述是这样的:
在这里插入图片描述
我们可以看到这其中的重点是“BeanFactory提供了配置框架和基本功能,而ApplicationContext添加了更多企业特定的功能。”即BeanFactory是配置框架的基本,而ApplicationContext是对BeanFactory拓展。

2、ApplicationContext继承BeanFactory接口,对该接口的功能进行了拓展。它本身是直接面向开发人员的,因此我们日常开发中绝大部分时候都是使用ApplicationContext而非BeanFactory。
ClassPathXmlApplicationContext和FileSystemXmlApplicationContext是该接口的主要实现类。
ClassPathXmlApplicationContext:在这里插入图片描述
FileSystemXmlApplicationContext:
在这里插入图片描述

3、spring中文文档

4、补充:
单例模式的定义。单例模式是指在内存中只会创建且仅创建一次对象实例的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IOC控制反转 的相关文章

随机推荐

  • 并发编程系列之Exchanger

    前言 上面我们介绍了信号量 再来说说交换者 这个东西用的不是很多 所以一般也不被经常关注 但是我们还是最好了解下 下面我将从什么是Exchanger以及如何使用Exchanger两个方面谈谈这个用于线程间协调的工具类 什么是Exchange
  • uni-app—从安装到卸载

    uni app 从安装到卸载 简介 uni app官网 uni app 是一个使用 Vue js 开发所有前端应用的框架 开发者编写一套代码 可发布到iOS Android Web 响应式 以及各种小程序 微信 支付宝 百度 头条 QQ 钉
  • spring中的RESTFUL风格是什么?

    什么是RestFul风格 RestFul是一种软件架构风格 设计风格 而不是标准 只是提供了一组设计原则和约束条件 它主要用于客户端和服务器交互类的一种代码编写风格 基于这个风格设计的软件可以更简洁 更有层次 更易于实现缓存等机制 来源 R
  • C++面试集锦

    C 面试集锦 2018年04月24日 18 28 37 草根caogen 阅读数 785 转自 http blog csdn net allen fan 01 article details 9713555 1 new delete mal
  • redis bitmap实现签到

    redis Bitmap 位图本质是数组 它基于string数据类型的按位操作 该数组由多个二进制位组成 每个二进制位都对应一个偏移量 可以成为一个索引或者位格 Bitmap支持的最大位数是232位 它可以极大的节省存储空间 使用512M内
  • 3种常见的渗透测试漏洞总结,快来收藏√

    越权漏洞 越权访问 Broken Access Control 简称BAC 是Web应用程序中一种常见的漏洞 由于其存在范围广 危害大 被OWASP列为Web应用十大安全隐患的第二名 所谓越权 顾名思义即超过当前用户的权力范围 越至不同用户
  • JS"类"中方法的互相调用

    JS 类 中的方法相互调用要加 this 不然无法成功
  • 微服务之nacos、feign、gateway

    文章目录 nacos 简介 配置 父pom pom yaml main RefreshScope 持久化 使用 附 feign 配置 pom main service 超时 使用 两个微服务使用的对象可以不一致 远程调用未携带Cookie等
  • 挖洞小思路

    1 Google语法 不管是在挖掘公益漏洞还是SRC漏洞 都需要使用到Google语法 而本次就对Google语法进行一些总结 1 1 基础语法 当然在挖掘漏洞过程中 可能使用到的语法也就是几个常用的 字符 注释 intext 寻找正文中含
  • AngularJS项目

    1 AngularJS介绍 AngularJS是一个为动态WEB应用设计的结构框架 它能让你使用HTML作为模板语言 通过扩展HTML的语法 让你能更清楚 简洁地构建你的应用组件 它的创新点在于 利用 数据绑定 和 依赖注入 它使你不用再写
  • 什么是埋点?

    埋点大概分成2种 业务埋点 这里埋点的含义就是 预先在用户可能操作的 点 埋下上报的代码 一旦用户发生了操作 我就上报该用户操作的详细信息 一般是要产品或者运营提出需求 在哪里埋点 比如 1 进入某个界面 客户端上报 xx用户进入了xx页面
  • ROS——不同版本间ROS进行通信

    在相同版本间的ROS进行通信不在赘述了 修改 etc hosts文件即可 最近项目遇到在Ubuntu16 04 与Ubuntu18 04两个系统间进行ROS通信 ROS版本分别为Kinetic和Melodic 配置网络后 两边都能够ping
  • 【项目实战】基于Python实现xgboost回归模型(XGBRegressor)项目实战

    说明 这是一个机器学习实战项目 附带数据 代码 文档 代码讲解 如需数据 代码 文档 代码讲解可以直接到文章最后获取 1 项目背景 随着大数据时代的到来 具备大数据思想至关重要 人工智能技术在各行各业的应用已是随处可见 在生产制造业 人工智
  • 自学python转行-强烈建议

    原标题 强烈建议 转行Python最好看一下这篇文章 一 转行要趁早 上面类似的问题群里还有很多 我请了一些不同岗位的嘉宾来给大家分享经验 下面谈谈我的感悟 1 转行如爬树 转行真的要趁早 年轻的时候 试错的代价很小 即使你走错了路还能转回
  • Typora 远程代码执行漏洞

    声明 本文仅用于技术交流 请勿用于非法用途 由于传播 利用此文所提供的信息而造成的任何直接或者间接的后果及损失 均由使用者本人负责 文章作者不为此承担任何责任 一 产品介绍 Typora 是一款由 Abner Lee 开发的轻量级 Mark
  • 软件测试管理

    软件测试 在规定的条件下对程序进行操作 以发现程序的错误 衡量软件质量 并对其是否能满足用户需求进行评估的过程 点工 项目研发 1 立项 立项依据 商业论证 可行性分析报告 编写角色 市场人员 项目经理 产品经理 内容 分析项目的成本和收益
  • 2020-2021前端面试题合集,结果蒙了

    正文 介绍下半连接队列 服务器第一次接收到客户端的SYN后 会处于SYN REVD阶段 此时双方还没有建立完全的连接 服务器会把此种状态下请求连接放在一个队列里 我们把这种队列称为半连接队列 已经完成三次握手并建立连接 就叫全连接队列 ht
  • 对顺序表中元素从小到大排序的算法

    编写一个对顺序表中元素从小到大排序的算法 函数接口如下 初始条件 线性表L已经存在 且元素个数大于1 操作结果 将L中的元素从小到大排序 Status ListSort Sq SqList L 然后 在main函数中调用ListSort S
  • 两个变量进行值交换的三种方式

    在很多应用场景中我们需要将两个变量的值进行交换 在这里总结了3种方式以及它们的利弊 第一种 可以定义一个额外的变量用于进行数值交换 这是种最普通但实用性又很强的方法 int a 1 int b 2 int c a c 1 a b a 2 b
  • IOC控制反转

    IOC控制反转 核心思想 控制反转思想的核心就是把对象的控制权的 反转 对象的控制权包括对象的创建 管理 调用等 在对象的生命周期的各个阶段进行相应的管理 由编码人员交还给 程序本身 去管理 这屏蔽了对象创建和管理等过程 使得程序员可以将精