Spring——什么是IOC?

一、原则
高内聚、低耦合
二、什么是IOC?
控制反转,把对象创建和对象之间的调用过程,交给spring进行管理
三、使用IOC的目的是什么?
降低耦合(谁和谁的耦合??如何降低的?)
原来:如果依赖的类改变,被依赖的类也需要改动
现在:直接修改配置文件
四、IOC过程
xml配置文件,配置创建的对象
通过反射读取配置文件
实例对象
五、IOC底层原理
xml解析
工厂模式
反射(通过得到字节码文件操作文件)
IOC就是控制反转,指创建对象的控制权进行转移,原来是由用户自己去创建对象,现在是spring去进行创建并管理,整个bean的生命周期从创建到销毁的过程全部都是由容器来管理(bean的生命周期),以前创建对象的主动权和时机都是由用户自己去进行把控的,但是现在这种权利都交给了spring容器,并且由容器根据配置文件去创建实例和管理各个实例之间的依赖关系,这样的好处就是对象和对象之间的松耦合,并且也有利于功能的一个复用。保证了不把对象的创建写死在类里,更加的灵活。
前面也说到了IOC让对象的创建不用去new,可以由spring自动生产,Spring使用了Java的反射机制,根据配置文件在运行时动态的去创建对象以及管理对象并调用对象的方法;
Spring中的DI也就是依赖注入和控制反转是同一个概念,但是不同角度的描述,DI是应用程序在运行时去依赖IOC容器来动态的注入对象需要的外部资源,对对象的属性进行赋值,比方说常见的注入方式有set注入和构造器注入,注解注入(@Autowired、@pupulateBean)
IOC让相互协作的组件之间保持松散的一个偶合,合编成与你把遍布与应用刚才的功能分离出来,形成可重用的功能组件
六、IOC(接口)
容器的本质就是一个工厂
Spring提供IOC容器实现两种方式:(两个接口)
BeanFactory:IOC容器基本实现,是Spring内部的使用接口,不提供开发人员使用,用的时候才创建(节约资源)
ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用。加载配置文件的时候 (需要结合项目是spring,耗时耗资源的在服务器启动的时候就创建,在服务器启动的时候就去加载配置文件创建对象)
Spring系列文章:
Spring——是什么?作用?内容?用到的设计模式?
Spring——Bean管理-xml方式进行属性注入
Spring——Bean管理-注解方式进行属性注入
Spring——什么是IOC?
Spring——AOP是什么?如何使用?
Spring——什么是事务?传播行为?事务隔离级别有哪些?
Spring——整合junit4、junit5使用方法
如果有想要交流的内容欢迎在评论区进行留言,如果这篇文档受到了您的喜欢那就留下你点赞+收藏脚印支持一下博主~
相关文章:

Spring——什么是IOC?
一、原则高内聚、低耦合二、什么是IOC?控制反转,把对象创建和对象之间的调用过程,交给spring进行管理三、使用IOC的目的是什么?降低耦合(谁和谁的耦合??如何降低的?)原来…...

力扣(LeetCode)430. 扁平化多级双向链表(2023.03.04)
你会得到一个双链表,其中包含的节点有一个下一个指针、一个前一个指针和一个额外的 子指针 。这个子指针可能指向一个单独的双向链表,也包含这些特殊的节点。这些子列表可以有一个或多个自己的子列表,以此类推,以生成如下面的示例…...
条款13:优先考虑const_iterator而非iterator
STL const_iterator等价于指向常量的指针(pointer-to-const)。它们都指向不能被修改的值。标准实践是能加上const就加上,这也指示我们需要一个迭代器时只要没必要修改迭代器指向的值,就应当使用const_iterator。 上面的说法对C11…...
23考研 长安大学846计算机考研复试《数据库》
长安大学846计算机考研,复试历年真题《数据库》。 目录: (1)数据库复习 (2)专业面试 (3)2017-2020年历年复试题 (4)复试的一些心得 数据库复习: 刚开始复试的时候,先把教材学习一遍(《数据库系统概念》 王珊 第五版),课后习题自己做一遍,网上有卖这本书的 配套…...
Android 9.0 系统去掉省电模式
1.概述 在9.0的系统rom开发定制化工作中,在系统中系统设置里面省电模式的选择中,有智能省电模式 省电模式 和超级省电模式三种 由于对rom系统做了大量定制功能开发,所以会在进入省电模式的时候 会出现某些不必要的问题,由于产品开发需求, 就要求去掉省电模式 不让平板进入…...
3 mmmmm
全部 答对 答错 单选题 7. 项目经理通知敏捷团队成员,由于意外的个人问题,产品负责人将不能参加即将到来的冲刺审查。这种情况下最可能的结果是什么? A project manager informs the agile team members that, due to unexpected personal …...

nvidia Jetson nano Linux内核编译
今天编译了nvidia 的jetson nano的内核。在网上找到的资料都比较老了。现在官网的最新版本是35.1.结合之前看到的博客的内容。关键是内核源码和交叉编译器的下载。找到官方文档后,编译成功!并且官方的文档是有一个编译脚本的。看之前的资料都是给出的命令,不知道这个nvbuild…...
理想汽车2023年销量冲击30万辆有戏吗?
出品 | 何玺 排版 | 叶媛 2月27日理想汽车发布财报,数据表明,2022年理想营收和销量双双大涨。在财报会议上,理想汽车CEO李想表示, 2023年的销量预期为30万辆。 那么,理想汽车2023年销量冲击30万辆的目标能实现吗&…...

借助CatGPT让turtlesim小乌龟画曲线
注意这里是CatGPT,不等同OpenAI的ChatGPT,但是用起来十分方便,效果也还行。详细说明ROS机器人turtlesim绘制曲线需要注意哪些ROS机器人turtlesim绘制曲线需要注意以下几点:绘制曲线前需要设置好turtlesim的初始位置和方向…...

Java面试总结(四)
synchroize的实例、静态、代码块的锁对象 修饰实例方法 修饰静态方法 修饰代码块 1、修饰实例方法 (锁当前对象实例) 给当前对象实例加锁,进入同步代码前要获得 当前对象实例的锁 。 synchronized void method() {//业务代码 }2、修饰静…...

强强联合,再强的英伟达NVIDIA也不落俗套
强强联合,全球科技领域永恒的话题【科技明说 | 每日看点】前些天,我看到GPU领域的英伟达(Nvidia)与微软(Microsoft)做了一项十年期的云计算协议,起初我以为微软Microsoft Azure与英伟达GPU方面有所合作,其实不然&#…...
maven使用心得
maven 配置文件默认在 ~/.m2/settings.xml maven命令行 mvn clean install -Dmaven.test.skiptrue -s ~/.m2/settings.xml 往本地仓库加jar包 命令形如: mvn install:install-file -DgroupIdcom.lee.net -DartifactIdMyToolIdl -Dversion1.0.0-SNAPSHOT -Dpac…...

【算法题】1958. 检查操作是否合法
插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 题目: 给你一个下标从 0 开始的 8 x 8 网…...

十一、GoF之代理模式
1 对代理模式的理解 【在程序中,对象A和对象B无法直接交互时。】 【在程序中,功能需要增强时。】 【在程序中,目标需要被保护时】 业务场景:系统中有A、B、C三个模块,使用这些模块的前提是需要用户登录,也…...
MySQL5.6和JVM(1.6)调优
MySQL5.6调优 目标了解什么是优化掌握优化查询的方法掌握优化数据库结构的方法掌握优化MySQL服务器的方法什么是优化?合理安排资源、调整系统参数使MySQL运行更快、更节省资源。<...

【汇编】三、寄存器(一只 Assember 的成长史)
嗨~你好呀! 我是一名初二学生,热爱计算机,码龄两年。最近开始学习汇编,希望通过 Blog 的形式记录下自己的学习过程,也和更多人分享。 上篇系列文章链接:【汇编】二、预备知识(一只 Assember 的…...
TFT通信协议解析与应用
TFTP(Trivial File Transfer Protocol)是一种简单的文件传输协议,常用于在本地网络上的设备之间传输小型文件。 通信大致过程 TFTP通信过程如下: TFTP通信双方建立连接:TFTP客户端与TFTP服务器建立连接。TFTP服务器监…...

python 操作word库docx 增强接口
前言用python 的docx 库操作word完成一些自动化的文档生成工作,但有时候会遇到docx库提供的操作无法直接满足业务上的需求,需要对其进行一些扩展。接口完善实现在指定的文字后面插入指定的文字任务:以下示例需要在文档中的所有 "人生苦短…...

ARM uboot 源码分析9 - uboot的硬件驱动部分
一、uboot 与 linux 驱动 1、uboot 本身是裸机程序 (1) 裸机本来是没有驱动的概念的(狭义的驱动的概念就是,操作系统中用来具体操控硬件的那部分代码叫驱动) (2) 裸机程序中是直接操控硬件的,操作系统中必须通过驱动来操控硬件…...

Mybatis动态sql语句foreach中拼接正则表达式字符串注意事项
今天要说到的查询情况,平时项目里边其实用到的并不是很多,使用正则表达式无非是为了匹配结果比较灵活,最常见的,我们的查询条件一般一个参数仅仅只是一种情况的筛选,对于如何选择查询方式,主要还是要看前端…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

MyBatis中关于缓存的理解
MyBatis缓存 MyBatis系统当中默认定义两级缓存:一级缓存、二级缓存 默认情况下,只有一级缓存开启(sqlSession级别的缓存)二级缓存需要手动开启配置,需要局域namespace级别的缓存 一级缓存(本地缓存&#…...

Appium下载安装配置保姆教程(图文详解)
目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...

RFID推动新能源汽车零部件生产系统管理应用案例
RFID推动新能源汽车零部件生产系统管理应用案例 一、项目背景 新能源汽车零部件场景 在新能源汽车零部件生产领域,电子冷却水泵等关键部件的装配溯源需求日益增长。传统 RFID 溯源方案采用 “网关 RFID 读写头” 模式,存在单点位单独头溯源、网关布线…...

边缘计算设备全解析:边缘盒子在各大行业的落地应用场景
随着工业物联网、AI、5G的发展,数据量呈爆炸式增长。但你有没有想过,我们生成的数据,真的都要发回云端处理吗?其实不一定。特别是在一些对响应时间、网络带宽、数据隐私要求高的行业里,边缘计算开始“火”了起来&#…...