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知识库 -> 通过老师的讲解,我明白了什么是IoC -> 正文阅读

[Java知识库]通过老师的讲解,我明白了什么是IoC

前言

今天讲到了spring框架,老师通过极少的语言让我明白了IoC产生的原因,为什么需要控制反转,依赖注入的原理。

本文就主要讲解IocDI

Spring的容器(bean)

首先我们来了解一下Spring Bean的加载流程

Bean的创建我们此处不再多少。

Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载,实例化Bean,并建立Bean和Bean的依赖关系,最后将这些准备就绪的Bean放在Bean缓冲池中,以供外层的应用程序调用。

在这里插入图片描述

  1. 配置Bean
	<bean id="bwmx" class="com.dyit.spring.Car">
		<property name="id" value="1"/>
		<property name="brand" value="奔驰"/>
		<property name="color" value="黄色"/>
		<property name="price" value="800000.00"/>
		
	</bean>
  1. 容器启动(加载工厂)
//获取容器
ApplicationContext  act =
				new FileSystemXmlApplicationContext("classpath:spring/applicationContext.xml");	
  1. 读取配置信息

在容器中定义了一个Bean的注册表:将Bean的信息注册到容器中

  1. 根据注册表实例化Bean对象

  2. 放入容器(工厂)的缓存中

从缓存中读取对象

Car bean = act.getBean(Car.class, "bwmx");//从缓存中读取

Spring的IoC容器

在这里插入图片描述
Spring容器时Spring框架的核心。容器将创建对象,把它们连接在一起,配置它们,并管理它们的整个声明周期从创建到销毁。

IoC容器具有依赖注入功能的容器,它可以创建对象,IoC容器负责实例化、定位、配置应用程序中的对象,及建立这些对象间的依赖。通常new一个实例,控制权有程序员控制,而==“控制反转”是指new 实例工作不由程序员来做而是交给Spring容器来做==。

简单来说:

通过配置(XML,注解)—>解析---->POJO(对象)—>IoC—>从IoC获取对象

Spring IoC容器通过解析你所需要的对象,来利用工厂来创作出你所需要的对象,对象是从上面我们提到过的Bean缓存池中取出。

IoC的概念

IoC:Inverse Of Control 控制反转,是一种设计原则,降低计算机代码之间的耦合度。

控制反转控制的是什么,又反转了什么?明白了这些你就搞懂了Ioc。

比如说:A类中需要一个B类

控制:以前A需要一个B,则在A中new 一个实例对象来使用,控制权在A,而现在我们将控制权转移,当我们需要对象的时候,通知工厂,工厂从Ioc容器中发现A需要的对象,将B对象注入给A。

反转:以前A创建(需要)B,主动去new,现在由工厂给你,你不需要去创建,你只需要接收即可,这就是反转。

好莱坞原则:演员–>导演–>简历

你们不要找我,你们的信息我都有,当我需要演员的时候,我会主动找你

DI 依赖注入

依赖注入可以说成是IoC实现的一种方式

通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。

  • set注入(推荐)

需要在实现类中实现set方法。

<bean id="pb" class="com.dyit.entity.Publisher">

	<property name="id" value="1"/>
	<property name="name" value="工人出版社"/>
	<property name="loc" value="长安区"/>
</bean>
  • 构造方法注入

需要在类中创建构造器

<bean id="au" class="com.dyit.entity.Author">
  <constructor-arg name="name" value="张三"/>
  <constructor-arg name="address" value="西安"/>
</bean>
  • 接口注入(少
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 15:57:54  更:2022-03-03 15:58:42 
 
开发: 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 12:10:23-

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