Spring源码阅读 ------------------- SpringFrameWork 5.2 术语理解(三)
一、一定要理解的概念
1、控制反转
对象A和对象B,对象A中需要new 一个对象B,但是,现在需要对象A,不在自己内部new 对象B,把new 对象B的权限交给第三方(IOC框架),操作的过程,就是控制反转(白话讲解).
例如:
常态


1 public A{
2
3 B b = new B();
4
5 }
反转


1 public A{
2
3 @Autoware
4 B b;
5
6 }
常态就是正转,就是调用者自己创建对象,自己控制这个对象的创建,生命周期,销毁这些事情,反转就是把创建对象这一套交给第三方(IOC框架)替你来做,你只做调用这件事,从而降低耦合度.
举个生活中的例子:睡觉和盖被子.你睡觉一定要盖被子,有两个事物,一个是睡觉,一个是盖被子,你每次睡觉都需要盖一床被子,那么,按照编程的面向对象思维考虑,你,作为一个入口类,你每次睡觉的时候,都要盖一床新被子,即new一个对象,在这种情况下,你每次睡觉都要去买床新被子,你控制被子被你盖着,这样就是正转.
而实际生活中,你不可能每次睡觉都买一床新被子,所以,你的做法就是整个柜子,然后,买好一床被子,放在里边,你要睡觉的时候,拿出被子来用,放被子的柜子就是一个容器(相当于IOC容器),然后,你每次都是盖这个被子,就是使用盖这个方法,而不是每次买一床新被子.被子的其他都交给柜子来控制,这就是反转.
2、依赖注入
依赖:两个对象互相关联,不是我调用你,就是你调用我.
注入:就是可以被调用的意思(对象A的使用,需要依赖到对象B,IOC框架创建一个这样的对象,将创建好的对象的调用返回给对象A(返回给对象A调用就是注入)
3、总结
依赖注入是手段,控制反转是目的.(控制反转与依赖注入其实描述的都是一回事,简单的说就是要打破一个类与另一个类的紧耦合(耦合就是一个类跟另一个类依赖,解耦就是解除这种依赖),只不过这2个术语描述的角度不同罢了.)
二、常见相关问题
1、IOC容器控制了什么
IOC容器控制对象B(对其创建,运行,销毁,回收,即生命周期控制)
2、哪些方面反转了?
对象的控制权限,从对象A(资源的使用者)控制,转移给IOC框架操作.
3、反转有什么作用?
反转简化代码,去重
4、什么是IOC容器
完成一系列IOC核心功能的组件的集合叫做IOC容器
Spring源码阅读 ------------------- SpringFrameWork 5.2 术语理解(三)的更多相关文章
- Spring源码阅读 ------------------- SpringFrameWork 5.2 +IDEA 部署
Spring作为JAVA学习者的必须学习和熟悉的框架,需要理解Spring的设计原理,核心设计模式,对于理解设计模式,面向对象的深入理解有着深远持久的影响,特此首先要做到本地部署源码开始,下面将介绍如 ...
- Sping学习笔记(一)----Spring源码阅读环境的搭建
idea搭建spring源码阅读环境 安装gradle Github下载Spring源码 新建学习spring源码的项目 idea搭建spring源码阅读环境 安装gradle 在官网中下载gradl ...
- Spring源码阅读 之 配置的读取,解析
在上文中我们已经知道了Spring如何从我们给定的位置加载到配置文件,并将文件包装成一个Resource对象.这篇文章我们将要探讨的就是,如何从这个Resouce对象中加载到我们的容器?加载到容器后又 ...
- 搭建 Spring 源码阅读环境
前言 有一个Spring源码阅读环境是学习Spring的基础.笔者借鉴了网上很多搭建环境的方法,也尝试了很多,接下来总结两种个人认为比较简便实用的方法.读者可根据自己的需要自行选择. 方法一:搭建基础 ...
- Bean实例化(Spring源码阅读)-我们到底能走多远系列(33)
我们到底能走多远系列(33) 扯淡: 各位: 命运就算颠沛流离 命运就算曲折离奇 命运就算恐吓着你做人没趣味 别流泪 心酸 更不应舍弃 ... 主题: Spring源码阅读还在继 ...
- 初始化IoC容器(Spring源码阅读)
初始化IoC容器(Spring源码阅读) 我们到底能走多远系列(31) 扯淡: 有个问题一直想问:各位你们的工资剩下来会怎么处理?已婚的,我知道工资永远都是不够的.未婚的你们,你们是怎么分配工资的? ...
- Spring源码阅读-ApplicationContext体系结构分析
目录 继承层次图概览 ConfigurableApplicationContext分析 AbstractApplicationContext GenericApplicationContext Gen ...
- Spring源码阅读笔记02:IOC基本概念
上篇文章中我们介绍了准备Spring源码阅读环境的两种姿势,接下来,我们就要开始探寻这个著名框架背后的原理.Spring提供的最基本最底层的功能是bean容器,这其实是对IoC思想的应用,在学习Spr ...
- Spring源码阅读笔记
前言 作为一个Java开发者,工作了几年后,越发觉力有点不从心了,技术的世界实在是太过于辽阔了,接触的东西越多,越感到前所未有的恐慌. 每天捣鼓这个捣鼓那个,结果回过头来,才发现这个也不通,那个也不精 ...
- idea构建spring源码阅读环境
注:由于文章不是一次性完成,下文中的test1目录和test目录应为同一个目录. (一)安装git和Gradle Spring项目托管在github之上,基于Gradle来构建项目.所以要想搭建Spr ...
随机推荐
- #网络流,树状数组#JZOJ 4020 Revolution with JZOJ 4018 Magic
CF297E Mystic Carvings=JZOJ 4018 Magic JZOJ 4020 Revolution 题目 有一个\(n*m(n,m\leq 20)\)的网格图 这格子有收益当且仅当 ...
- Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 基础 什么是 Java Java 是一种由 Sun Microsystems 于 1995 年首次发布的编程语言和计算平台.Java 是一种通用的.基于类的.面向对象的编程语言,旨在减少实现 ...
- XML 简介及用法详解
XML 是一种用于存储和传输数据的与软件和硬件无关的工具. 什么是XML? XML代表eXtensible Markup Language(可扩展标记语言).XML是一种与HTML非常相似的标记语言. ...
- C# PropertyChanged 事件-数据绑定
在.NET平台上,数据绑定是一项令人十分愉快的技术.利用数据绑定能减少代码,简化控制逻辑. 通常,可以将某个对象的一个属性绑定到一个可视化的控件上,当属性值改变时,控件上的显示数据也随之发生变化.要实 ...
- openGauss 列存表PSort索引
openGauss 列存表 PSort 索引 概述 PSort(Partial sort) Index 是在列存表的列上建的聚簇索引.CUDesc 上有每个 CU 的 min 和 max 值,但如果业 ...
- c# checked 和 unchecked
前言 我们知道一个东西在c# 中 比如说int 的max 加1会等于min. 如: static void Main(string[] args) { int i = 2147483647; int ...
- 微信小程序三种授权登录的方式
经过一段时间对微信小程序的研发后 总结出以下三种授权登录的方式,我给他们命名为'一次性授权''永久授权''不授权' 1.一次性授权常规写法,需要获取用户公开信息(头像,昵称等)时,判断调取授权登录接口 ...
- 树莓派和esp8266之间使用tcp协议通信
树莓派代码: from flask import Flask, render_template import socket import threading app = Flask(__name__) ...
- 轻松复现一张AI图片
轻松复现一张AI图片 现在有一个非常漂亮的AI图片,你是不是想知道他是怎么生成的? 今天我会交给大家三种方法,学会了,什么图都可以手到擒来了. 需要的软件 在本教程中,我们将使用AUTOMATIC11 ...
- Timing:在线自习室快速搭建
通过超低延迟的音视频通信技术.视频连麦.弱网传输算法,快速搭建自习场景,提升自习效率. 客户简介 氪细胞主打产品Timing,是国内最早推出,也是规模最大的在线自习室,是新一代的教育与社交融合平 ...