IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring源码系列之IOC与DI -> 正文阅读

[Java知识库]Spring源码系列之IOC与DI

Spring源码系列之IOC与DI

通俗易懂的讲IOC和DI

首先我们再看源码之前要清楚什么是IOC和DI,以及它的一些简单实现方法。

IOC我们可以理解为是一个共享充电桩(容器),里面存放着各种各样的充电宝,DI可以理解为给每个充电宝插上数据线(实例化)。

我们从拿到一个项目时,可以得到的信息有限,想要启动的时候讲类注入到IOC容器中,并通过DI将其实例化,可分解为以下几步。

  • 读取配置文件,从配置文件拿到项目路径。
  • 根据项目路径去找到打包的文件夹,扫描到其中的class文件,并将其初始化成特定的类。
  • 将带有@Controller、@Service、@Repository、@Component等注解的类放进IOC容器中(可以理解为一个Map)。
  • 将类中带有@Autowired等注解的属性进行依赖注入。
		// 1.加载配置文件
        this.doLoadConfig("application.properties");

        // 2.扫描相关的类
        this.doScanner(contextConfig.getProperty("scanPackage"));

        //------------------------IOC功能--------------------------------
        // 3.初始化IOC容器,将扫描到的类进行实例化,并且缓存到IOC容器中
        this.doInstance();

        //-------------------------DI功能------------------------------------
        // 4.完成依赖注入,实现初始化
        this.doAutowired();

Spring中的概念

Map :一个IOC容器
BeanFactory:顶层接口,也是创造Bean的一个工厂。
BeanDefinitionReader:解析器,用来解析所有配置文件。
BeanDefinition:原信息、配置,包括xml、yml、properties、annotation等。
Bean:Bean实例,通过反射获取的实例化Object对象,包括原生的Bean和代理的Bean。
BeanWrapper:包装器,将Bean缓存到IOC容器中,持有了Bean的引用。
ApplicationContext:上下文,持有了BeanFactory的引用,对用户开放,是一种门面模式。

通过下图可以更好的理解它们之间的关系
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-09 12:26:14  更:2022-05-09 12:30:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 0:15:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码