【修真院java小课堂】Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?
SpringIOC简单介绍
Java小课堂
分享人:方广辉
1.背景介绍
2.知识剖析
3.常见问题
4.扩展思考
5.编码实战
6.参考文献
7.更多讨论
1. 背景介绍
软件系统中的对象就像齿轮一样,协同工作,但是互相耦合,一个零件不能正常工作,整个系统就崩溃了。这是一个强耦合的系统。齿轮组中齿轮之间的啮合关系,与软件系统中对象之间的耦合关系非常相似。对象之间的耦合关系是无法避免的,也是必要的,这是协同工作的基础。对象之间耦合度过高的系统,必然会出现牵一发而动全身的情形。
为了解决对象间耦合度过高的问题,软件专家MichaelMattson提出了IOC理论,用来实现对象之间的“解耦”。
2.知识剖析
基本概念
读取配置文件
设值注入
构造注入
IOC(Inversion of Control)即“控制反转”,是一种是面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度。其基本思想是:借助于“第三方”实现具有依赖关系的对象之间的解耦。
由于引进了中间位置的“第三方”,也就是IOC容器,使得A、B、C、D这4个对象没有了耦合关系,齿轮之间的传动全部依靠“第三方”了,全部对象的控制权全部上缴给“第三方”IOC容器。
2.常见问题
什么是依赖注入?
它们之间有什么关系?
依赖注入(DI)就是将实例变量传入到一个对象中去
如果 Class A 中,有Class B的实例,则称Class A和Class B就有一个依赖关系
控制反转是一种思想
依赖注入是一种设计模式
IoC框架使用依赖注入作为实现控制反转的方式
依赖注入方式
1、setter方法
2、构造器方法
3、自动装配与注解注入
3.编码实战
Bean创建及实例化
依赖注入方式
4.扩展思考
Bean的作用
Singleton作用域
Bean的作用域是指spring容器创建Bean后的生存周期即由创建到销毁的整个过程。之前我们所创建的所有Bean其作用域都是Singleton,这是Spring默认的,在这样的作用域下,
每一个Bean的实例只会被创建一次,而且Spring容器在整个应用程序生存期中都可以使用该实例。因此之前的代码中spring容器创建Bean后,通过代码获取的bean,无论多少次,都是同一个Bean的实例。
prototype作用域 它代表每次获取Bean实例时都会新创建一个实例对象,类似new操作符。
request作用域 关于request作用域,对于每次HTTP请求到达应用程序,Spring容器会创建一个全新的
Request作用域的bean实例,且该bean实例仅在当前HTTPrequest内有效,整个请求过程也只会使用相同的bean实例,因此我们可以根据需要放心的更改所建实例的内部状态,而其他请求HTTP请求则创建新bean的实例互不干扰,当处理请求结束,request作用域的bean实例将被销毁。
Session作用域 每当创建一个新的HTTP Session时就会创建一个Session作用域的Bean,并该实例bean伴随着会话的存在而存在。
6.参考文献
百度,博客
.更多讨论
今天的分享就到这里啦,欢迎大家提问和探讨!
@Autowired和@Resources的区别是什么?
@Autowired默认按类型查找bean,用名字查找需要配合@Qualifier使用
@Resources有两种查找方式byname,bytype.默认byname,如果没有匹配name,按照bytype查找
@Resources(name="")仅通过name查找
DI注入有哪些方式啊
setter
构造器
自动装配
注解注入
静态的和简单工厂方法有什么区别
简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例。
不修改代码的话,是无法扩展的。
工厂方法
工厂方法是针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例。
在同一等级结构中,支持增加任意产品。
【修真院java小课堂】Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?相关推荐
- 【修真院java小课堂】ArrayList浅析
大家好,我是IT修真院郑州分院第8期学员,一枚正直善良的java程序员.今天给大家分享一下,修真院官网 java任务中可能会使用到的知识点: ArrayList浅析 width="640&q ...
- 【修真院Java小课堂】Annotation注解
标题: [修真院Java小课堂]Annotation注解 开场语: 大家好,我是IT修真院西安分院第三期学员,一枚正直纯洁善良的JAVA程序员,今天给大家分享一下,修真院官网JAVA任务七,深度思考中 ...
- 【修真院JAVA小课堂】redis缓存集群简单介绍
大家好,我是IT修真院郑州分院第11期的JAVA学员,一枚正直纯洁善良的java程序员. 今天给大家分享一下,redis缓存集群简单介绍. 1.背景介绍 redis是一个key-value存储系统.和 ...
- 【修真院java小课堂】clean,install,package,deploy分别代表什么含义?
大家好,我是IT修真院成都分院第12期学员,一枚正直善良的java程序员. 今天给大家分享一下,修真院官网java任务一中可能会使用到的知识点: clean,install,package,deplo ...
- 【修真院JAVA小课堂】什么是压测,为什么要进行压力测试?JMETER工具的使用
大家好,我是IT修真院郑州分院第11期的JAVA学员,一枚正直纯洁善良的java程序员. 今天给大家分享一下,什么是压测,为什么要进行压力测试?JMETER工具的使用. 1.背景介绍 压测,即压力测试 ...
- 【修真院Java小课堂】Tiles框架简单介绍
大家好,我是IT修真院上海分院第6期的学员,一枚正直纯洁善良的程序员 今天给大家分享一下,Tiles框架简单介绍 Tiles框架简单介绍 背景介绍 什么是Tiles Tiles 是一种JSP布局框架, ...
- 【修真院WEB小课堂】定时器有哪些用法?
这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [定时器有哪些用 ...
- 【修真院pm小课堂】详谈用户体验五要素
[修真院pm小课堂]详谈用户体验五要素 用户体验五要素在产品的工作中经常听到,那么他究竟是什么呢?怎样去使用呢? 一.战略层 明确商业目标和用户目标,解决两者之间的冲突,找到平衡点,确定产品原则和定位 ...
- 【修真院web小课堂】angular js常用指令 ng-blur、ng-change、ng-focus、ng-disabled是如何运用到表单验证中的?
大家好,我是IT修真院武汉分院web第16期的学员孟晨,一枚正直纯洁善良的web程序员 今天给大家分享一下,修真院官网js(职业)任务八,深度思考中的知识点--angular js常用指令 ng-bl ...
- 【修真院web小课堂】请描述 BFC(Block Formatting Context) 及其如何工作
请描述 BFC(Block Formatting Context) 及其如何工作 小课堂[北京-WEB-A组] 分享人:要来点本子吗 大家好,我是IT修真院北京分院第35期的学员,一枚正直.纯洁.善良 ...
最新文章
- java中@Qualifier(string)是什么用法
- lex 词法分析 linux,lex语言词法分析
- 2019.1.7 区块链论文翻译
- 牛客题霸 NC14 按之字形顺序打印二叉树
- 一直在构建工作空间_智能工作空间让Dropbox拥有无限扩展潜力
- PLSQL Developer学习笔记
- jmeter-正则表达式提取器
- 西门子S7-200 SMART控制步进电机(一)
- gg修改器免root下载
- 笔记本电脑清灰打硅脂后,开机一直黑屏,如何破?
- phpadmin的安装教程
- 干货深挖!从写简历,到面试、谈薪酬的那些技巧和防坑指南
- 老厉害了!2600亿,紫光集团南京再投半导体生产线
- 计组头哥实验 第2关 原码一位乘法器设计
- c语言周长和面积计算
- Android 游戏破解修改金币
- charts中各种图演示
- 计算机 手机原理是什么,什么是手机投屏,手机投屏到电脑上的原理
- 苏州大学在职研究生计算机专业,苏州大学在职研究生入学须知
- 19 款国产手机无一幸免:15 分钟破解人脸识别,打印眼镜让刷脸形同虚设