Spring 的 IoC(控制反转)

news2024/12/24 8:24:18

IoC 是 Inversion of Control 的简写,译为“控制反转”,它不是一门技术,而是一种设计思想,也是一个概念,同时是一个重要的面向对象编程法则,能够指导我们如何设计出松耦合、更优良的程序。

在这里说 IoC 之前,你需要完全理解一个概念 DI(依赖注入)。

 

当你理解依赖注入以后,对控制反转就非常简单了,只是一个概念而已。 

什么是依赖注入,请参考文章:Java 依赖注入(DI)icon-default.png?t=N3I4https://www.ossez.com/t/java-di/14383

控制反转

用土话来说就是本来应该是用你自己程序解决的依赖注入,我们现在把这个权力交给 Spring 来进行管理。

由 Spring 来管理所有的对象,因为你的权力下放给 Spring 了,Spring 就来进行控制了。

这个现象就叫做控制反转。

所以控制反转只是对一个现象的定义,Spring 是这个现象的具体实现罢了。

Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。我们将由 IoC 容器管理的 Java 对象称为 Spring Bean,它与使用关键字 new 创建的 Java 对象没有任何区别。

IoC 容器是 Spring 框架中最重要的核心组件之一,它贯穿了 Spring 从诞生到成长的整个过程。

如果你特别牛逼,你也弄个框架,让大家把对象的控制权都给你,那么你做的事情也就是在实现控制反转。

https://www.ossez.com/t/spring-ioc/14391icon-default.png?t=N3I4https://www.ossez.com/t/spring-ioc/14391

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/449433.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java ---包装类

(一)包装类概念 官方说法: Java是面向对象的语言,但是为了便于开发者的使用,Java中却沿用了C语言的基本数据类型,在进行基本的数据计算时,开发者可以直接使用基础类。但是当需要和Java其他对象…

如何理解ThreadLocal

ThreadLocal的基本概念 在并发编程中,多个线程访问同一个变量,可能会出现线程安全问题、为了保证在多线程环境下访问共享变量的安全性,通常在访问共享变量的时候加锁,以实现线程同步的效果。 使用同步锁机制保证多线程访问共享变…

ChatGPT | 一文详解ChatGPT(学习必备)

本文概要 本篇文章主要介绍ChatGPT的产生和使用体验,适合不了解ChatGPT或者了解不够透彻的小伙伴,文中的描述非常详细,干货满满,感兴趣的小伙伴快来一起学习吧! 🌟个人简介 ☀️大家好!我是新人…

信息的相关性和冗余度:信息在整个文明中的作用

文章目录 I 古埃及的象形文字1.1 罗塞塔石碑1.2 古埃及文字音节和希腊字母的对应表1.3 破解古埃及文字 I 古埃及的象形文字 1.1 罗塞塔石碑 这个石碑是在公元前196年埃及国王托勒密五世加冕一周年的诏书。 在此前大约一百年,埃及已经被来自希腊北方城邦的亚历山大…

C++------引用

一、 引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 类型& 引用变量名(对象名) 引用实体; int main() {//一个变量可以有多个引用…

LWIP协议与TCP/IP

1. 学习一个东西,先了解这个东西是干什么用的,哪些场景会用到它,与自己已经掌握的其他知识的联系 a. 例如:LWIP这个东西是干什么用的:他就是一个裁剪后保持大部分TCP/IP功能的协议。用少量的资源消耗实现一个较为完整的…

大数据实战 --- 淘宝用户行为数据分析

目录 开发环境 数据描述 功能需求 数据准备 数据清洗 用户行为分析 找出有价值的用户 开发环境 HadoopHiveSparkHBase 启动Hadoop:start-all.sh 启动zookeeper:zkServer.sh start 启动Hive: nohup hiveserver2 1>/dev/null 2>…

从零开始的ChatGLM 配置详细教程

从零开始的ChatGLM配置教程 文章目录 从零开始的ChatGLM配置教程一,前言二,环境配置1、下载ChatGLM项目2、配置程序运行环境 三、在HuggingFace下载chatGLM-6B模型1,安装 Git Lfs2,下载相关文件3,在HuggingFace中下载相…

什么是隔离放大器

隔离放大器(也称为单位增益放大器)是一种提供隔离的运算放大器电路电路的一部分与另一部分电路不同,这样就不会在电路的一部分中使用、消耗或浪费功率。 现在将对此进行彻底解释,因为这乍一看似乎是一个令人生畏的话题&#xff0c…

【TCP Wrappers】

目录 一、保护原理二、TCP Wrappers 保护机制的两种方式三、TCP Wrappers 的访问策略四、TCP Wrappers 机制的基本原则1、允许所有,拒绝个别2、允许个别,拒绝所有实列 一、保护原理 二、TCP Wrappers 保护机制的两种方式 1.直接使用 tcpd 程序对其他服务…

JavaFx 自定义封装 DateTimePicker 时间选择组件(支持时分秒)

JavaFx DateTimePicker 时间选择组件 javaFx 自定义时间选择组件 DateTimePicker, javaFx 源代码不支持时分秒选择,该代码组件支持时分秒选择,同时也支持清空、取消、此刻等操作! 效果如下图所示: 源码地址&#xff…

AXI4总线学习笔记

AXI4 总线是 ARM 公司开发的一种总线,广泛应用于 Xilinx 的 IP 核中,比如笔者近期涉及 DDR 的读写控制,需要用到 MIG IP 核,这个 IP 核就通过 AXI4 总线进行控制。 AXI4 共有 5 种通道:读地址通道 ARC,读数…

虽然音视频开发只是功能组件开发,但薪资远高于普通开发岗……

首先要明白一件事情,音视频开发是功能组件开发而不是应用开发。应用开发的具体需求基本上是定制化的,而且需求一直在改,比如今天加个按钮,明天改个风格,只要应用还在天天都有活干。而功能组件开发的需求大多都比较统一…

一文详解过滤器Filter、拦截器Interceptor和切面Aspect的区别

目录 Filter过滤器 作用 应用场景 拦截器Interceptor Aspect切片 三者对比 执行顺序 拦截层面 过滤器Filter和拦截器Interceptor的区别 Filter过滤器 Filter 过滤器它是 JavaWeb 的三大组件之一 三大组件分别是:Servlet 程序、Listener 监听器、Filter 过滤…

vue3组件间怎么通信?简述一下通信方式

在写 vue3 的项目中,我们都会进行组件通信,除了使用 pinia 公共数据源的方式除外,我们还可采用那些更简单的API方法呢?给大家介绍介绍几种父子组件和子父组件通信的方式。 1、父子组件通信 1.1 defineProps 父子组件通信我们第一…

【Redis】Redis数据结构——链表

【Redis】Redis数据结构——链表 注意事项: 本文第三点redis中操作列表的相关命令可参考博文: 【Redis】Redis基础命令集详解_Etui۹(・༥・)و ̑̑的博客-CSDN博客 本文参考内容如下: 1、Redis数据结构——链表 - 随心…

MySQL_第07章_单行函数

第07章_单行函数 讲师:尚硅谷 - 宋红康(江湖人称:康师傅) 官网: http://www.atguigu.com 1. 函数的理解 1.1 什么是函数 函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我…

音视频八股文(3)--ffmpeg常见命令(2)

07-ffplay命令播放媒体 播放本地文件 播放本地 MP4 视频文件 test.mp4 的命令,从第 2 秒位置开始播放,播放时长为 10 秒,并且在窗口标题中显示 “test time”: ffplay -window_title "test time" -ss 2 -t 10 -autoe…

[计算机图形学]辐射度量学、渲染方程与全局光照(前瞻预习/复习回顾)

一、前言 我们前面讲到的Blinn-Phong着色,Whitted-Style光线追踪都有一定问题,那就是它们并没有严格的按照物理规则定义各个变量。比如,Blinn-Phong中的光的强度,并没有一个确切的单位。同时Whitted-Style光线追踪我们也做了很多简…

二十分钟深入详解<二叉搜索树>!!!

目录 前文 一,什么是二叉搜索树? 1.1 二叉搜索树的概念 二, 二叉搜索树的常用操作及其实现 2.1 查找 2.2 插入 2.3 删除 三,二叉搜索树的应用 3.1 K模型 3.2 KV模型 四,二叉搜索树的性能分析 五,…