Spring核心容器IOC案例讲解,带你理解IOC

Universe Infinity inc.

什么是IOC容器,先把IOC给忽略到,其实就是个容器。
什么?容器又是个啥玩意?容器是用来放东西的东西啊。
各个领域都喜欢起一些专业术语,显得很高级。给你讲IOC是不是很高级,给你讲Map是不是就明白了。

bean对象最终存储在spring容器中,在spring源码底层就是一个map集合,存储bean的map在DefaultListableBeanFactory类中:
private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);
Spring容器加载到Bean类时 , 会把这个类的描述信息, 以包名加类名的方式存到beanDefinitionMap 中。
其中 String是Key , 默认是类名首字母小写 ;BeanDefinition , 存的是类的定义(描述信息) , 我们通常叫BeanDefinition接口为 : bean的定义对象。

在Spring的底层,其就是一个Map数据结构。这个Map被大家称为容器,其中存放的是一个个的对象。
那么IOC又是个啥玩意呢?别着急我们一步步来。

IOC容器案例讲解

  • 1、小明买苹果准备吃(但是牙口不好),小明买把刀切苹果。
  • 2、小明要喝依云山雪水(脑袋进水了吧)。小明要先去买个瓶子,然后乘坐交通工具去依云山,小明在雪山下面等了好久,终于雪化了,灌了一瓶水,高高兴兴回来了。
  • 3、小明吃完苹果,看到快过期的依云水,叹了一口气,用依云水冲洗了刀。
  • 4、来回跑来跑去,小明累坏了,小明找到了我们
  • 5、小明又过来了,说这个空间戒指不能放东西啊
  • 6、总结

1、小明买苹果准备吃(但是牙口不好),小明买把刀切苹果。

  • 苹果和刀都是给好的,没的说。
class Apple {String desc = "苹果";@Overridepublic String toString() {return "Apple{desc='" + desc + "'}";}
}
class Knife {String desc = "水果刀";void cut(Object object) {System.out.println(this + "切:" + object);}public String toString() {return "Knife{desc='" + desc + "'}";}
}
  • 小明要买水果刀吃苹果,这些都要自己去做(这个过程就new)
public class Main {@Testpublic void test1() {Apple apple = new Apple(); //小明买苹果准备吃(但是牙口不好)Knife knife = new Knife(); //小明买把刀knife.cut(apple); //小明用刀切苹果}
}
  • 输出Knife{desc='水果刀'}切:Apple{desc='苹果'}

2、小明要喝依云山雪水(脑袋进水了吧)。小明要先去买个瓶子,然后乘坐交通工具去依云山,小明在雪山下面等了好久,终于雪化了,灌了一瓶水,高高兴兴回来了。

  • 杯子和水都是给定的,没的说
class Cup {String desc = "杯子";void load(Object object) {System

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

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

相关文章

配置Mycat服务

1.安装mycat 2.修改配置 vim /usr/local/mycat/conf/users/root.user.json 设置客户端连接mucat 服务器时 使用的用户名和密码:定义客户端连接mycat服务使用用户及密码&#xff1a; vim /usr/local/mycat/conf/datasources/prototypeDs.datasource.json 访问 3306使用的账…

vue3源码(一)搭建开发环境

Monorepo:是管理项目代码的一个方式&#xff0c;指在一个项目仓库(repo)中管理多个模块/包(package) vue3源码采用Monorepo管理项目 vue3项目架构 搭建Monorepo环境 1.全局安装pnpm npm install pnpm -g # 全局安装pnpm pnpm init -y # 初始化配置文件创建.npmrc文件&#x…

代码随想录算法训练营day28 || 93.复原IP地址,78.子集,90.子集II

视频讲解&#xff1a; 回溯算法如何分割字符串并判断是合法IP&#xff1f;| LeetCode&#xff1a;93.复原IP地址_哔哩哔哩_bilibili 回溯算法解决子集问题&#xff0c;树上节点都是目标集和&#xff01; | LeetCode&#xff1a;78.子集_哔哩哔哩_bilibili 回溯算法解决子集问题…

Docker基础语法

目录 一.docker安装 二.docker基础名词 三.docker基础命令 四.命令别名 五.数据卷 六.挂载本地目录或文件 七.Docker镜像 八.网络 一.docker安装 1.安装yum工具 yum install -y yum-utils device-mapper-persistent-data lvm2 2.安装 docker yum源 yum-config-manag…

【Effective C++11】5. 实现

Item26 尽量延后变量定义式的出现时间 定义变量&#xff08;自定义变量&#xff09;未使用&#xff0c;会承担构造成本和析构成本&#xff0c;考虑以下场景&#xff1a; 如果有异常出现&#xff0c;encrypted 没有被使用&#xff0c;但是会付出构造和析构的成本&#xff1b;通…

WEB前端伪类选择器以及伪元素选择器

表单补充 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><form action"#" method"get" enctype"text/plain"><!-- <input type"…

EXECL 单元格字符串链接 CONCAT :应用:将一行数据转为json

源&#xff1a; 目标 函数表示 CONCAT("data", CHAR(10), "{", CHAR(10), " ", "ulAlarmId : ", A5, CHAR(10), " ", "ulAlarmLevel : ", D5, CHAR(10)," ", "bBo…

JavaEE-微服务-Vuex

Vuex 2.1 什么是Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。 Vuex在组件之间共享数据。 2.2 使用 vue cli 构建项目 2.3 入门案例 2.3.1 定义数据 export default new Vuex.Store({state: { // 状态区域&#xff08;定义变量区域&#xff09;user: ,toke…

python学习笔记10(循环结构2)

&#xff08;一&#xff09;循环结构2 1、扩展模式 语法&#xff1a; for 循环变量 in 遍历对象&#xff1a; 语句块1 else: 语句块2 说明&#xff1a;else在循环结束后执行&#xff0c;通常和break和continue结合使用 2、无限循环while while 表达式&#xff1a; 语句块…

Ubuntu Desktop 隐藏 / 显示文件和文件夹

Ubuntu Desktop 隐藏 / 显示文件和文件夹 1. GUI hot key2. Show hidden and backup filesReferences 1. GUI hot key Ctrl H: 隐藏 / 显示文件和文件夹 2. Show hidden and backup files Edit -> Preferences -> Views References [1] Yongqiang Cheng, https://yo…

梳理Langchain-Chatchat知识库API接口

一.Langchain-Chatchat 知识库管理 1.Langchain-Chatchat 对话和知识库管理界面 Langchain-Chatchat v0.28 完整的界面截图&#xff0c;如下所示&#xff1a; 2.知识库中源文件和向量库 知识库 test 中源文件和向量库的位置&#xff0c;如下所示&#xff1a; 3.知识库表结构 k…

一夜暴增200城,智驾开城秘诀在哪?小鹏、理想、大疆等各有不同

作者 |Marshall 编辑 |祥威 一夜过后&#xff0c;城市NOA可用范围突然增至两百多城市&#xff0c;这是最近小鹏的智驾给大家的印象。 我们曾在「特斯拉、小鹏开路&#xff0c;城市NOA距好用还有几年&#xff1f;」一文中&#xff0c;探讨了城市NOA落地过程中所面临的地图问题…

vue3-组件基础

什么是组件 组件允许我们将 UI 划分为独立的、可重用的部分&#xff0c;并且可以对每个部分进行处理。在实际应用中&#xff0c;组件常常被组织成层层嵌套的树状结构。 定义一个组件 我们一般会将 Vue 组件定义在一个单独的 .vue 文件中&#xff0c;这被叫做单文件组件 (简称…

TypeScript 实用技巧(中)

十四、向类型添加特殊值 原文&#xff1a;exploringjs.com/tackling-ts/ch_special-values.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 14.1 在带内添加特殊值 14.1.1 向类型添加 null 或 undefined 14.1.2 向类型添加符号 14.2 在带外添加特殊值 14.2…

ES查询语法介绍及举例

1. ES查询语法 Elasticsearch&#xff08;ES&#xff09;的查询语法非常强大且灵活&#xff0c;允许执行从简单到复杂的各种搜索操作。ES查询主要基于两种类型&#xff1a;Leaf Query Clauses&#xff08;叶查询子句&#xff09;和Compound Query Clauses&#xff08;复合查询…

Arduino开发实例-NEO-6M GPS模块使用

NEO-6M GPS模块使用 文章目录 NEO-6M GPS模块使用1、硬件准备1.1 NEO-6M GPS模块介绍1.2 硬件接线原理图2、代码实现2.1 GPS数据接收2.2 GPS数据组成2.3 解析GPS数据2.4 在OLED中显示GPS数据本文将展示如何将 NEO-6M GPS 模块与 Arduino 连接。 NEO-6M GPS 模块是一个 GPS 接收…

HJ9 提取不重复的整数【C语言】

【华为机试题 HJ9】提取不重复的整数 描述输入描述:输出描述:示例1参考代码1参考代码2描述 输入一个 int 型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。 保证输入的整数最后一位不是 0 。 数据范围: 1 ≤ n ≤ 10^8 输入描述: 输入一个int型整数 …

[亲测有效]CentOS7下安装mysql5.7

前言 近期项目需要搭配mysql一起存储相关数据&#xff0c;但对mysql的版本有要求&#xff0c;于是在服务器搭建了mysql5.7&#xff0c;顺便记录一下搭建步骤和踩坑解决步骤。 目录 前言 一、清除旧安装包 二、安装YUM 三、使用yum命令即可完成安装 四、重新设置密码 五、…

美妆-美妆种类

粉底液 作用&#xff1a; 整体肤色提亮&#xff0c;匀称肤色&#xff0c;提升皮肤质感&#xff0c;轻微遮瑕&#xff0c; 中低价位&#xff1a;kate&#xff0c;妙巴黎 遮瑕 作用&#xff1a; 强力遮盖皮肤瑕疵 种类&#xff1a; 遮瑕膏&#xff0c;遮瑕液&#xff0c;遮…

JavaScript总结(三)

今日成果&#xff1a; 27.对象 var xiaoming { name:小明, birth:1990, school:No.1 Middle School, score:null, middle-school:no1.school//不是一个有效变量 }; xiaoming.name;//小明 xiaoming[middle-school];//no1.school xiaoming.age;//undefined…