SpringIOC简单介绍

Java小课堂

分享人:方广辉

1.背景介绍

2.知识剖析

3.常见问题

4.扩展思考

5.编码实战

6.参考文献

7.更多讨论

1.      背景介绍

软件系统中的对象就像齿轮一样,协同工作,但是互相耦合,一个零件不能正常工作,整个系统就崩溃了。这是一个强耦合的系统。齿轮组中齿轮之间的啮合关系,与软件系统中对象之间的耦合关系非常相似。对象之间的耦合关系是无法避免的,也是必要的,这是协同工作的基础。对象之间耦合度过高的系统,必然会出现牵一发而动全身的情形。

为了解决对象间耦合度过高的问题,软件专家MichaelMattson提出了IOC理论,用来实现对象之间的“解耦”。

2.知识剖析

基本概念

读取配置文件

设值注入

构造注入

IOC(Inversion of Control)即“控制反转”,是一种是面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度。其基本思想是:借助于“第三方”实现具有依赖关系的对象之间的解耦。

由于引进了中间位置的“第三方”,也就是IOC容器,使得A、B、C、D这4个对象没有了耦合关系,齿轮之间的传动全部依靠“第三方”了,全部对象的控制权全部上缴给“第三方”IOC容器。

           软件系统在没有引入IOC容器之前,如图所示,对象A依赖于对象B,那么对象A在初始化或者运行到某一点的时候,自己必须主动去创建对象B或者使用已经创建的对象B。无论是创建还是使用对象B,控制权都在自己手上。
           软件系统在引入IOC容器之后,这种情形就完全改变了,如图所示,由于IOC容器的加入,对象A与对象B之间失去了直接联系,所以,当对象A运行到需要对象B的时候,IOC容器会主动创建一个对象B注入到对象A需要的地方。

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来创建实例?相关推荐

  1. 【修真院java小课堂】ArrayList浅析

    大家好,我是IT修真院郑州分院第8期学员,一枚正直善良的java程序员.今天给大家分享一下,修真院官网 java任务中可能会使用到的知识点: ArrayList浅析 width="640&q ...

  2. 【修真院Java小课堂】Annotation注解

    标题: [修真院Java小课堂]Annotation注解 开场语: 大家好,我是IT修真院西安分院第三期学员,一枚正直纯洁善良的JAVA程序员,今天给大家分享一下,修真院官网JAVA任务七,深度思考中 ...

  3. 【修真院JAVA小课堂】redis缓存集群简单介绍

    大家好,我是IT修真院郑州分院第11期的JAVA学员,一枚正直纯洁善良的java程序员. 今天给大家分享一下,redis缓存集群简单介绍. 1.背景介绍 redis是一个key-value存储系统.和 ...

  4. 【修真院java小课堂】clean,install,package,deploy分别代表什么含义?

    大家好,我是IT修真院成都分院第12期学员,一枚正直善良的java程序员. 今天给大家分享一下,修真院官网java任务一中可能会使用到的知识点: clean,install,package,deplo ...

  5. 【修真院JAVA小课堂】什么是压测,为什么要进行压力测试?JMETER工具的使用

    大家好,我是IT修真院郑州分院第11期的JAVA学员,一枚正直纯洁善良的java程序员. 今天给大家分享一下,什么是压测,为什么要进行压力测试?JMETER工具的使用. 1.背景介绍 压测,即压力测试 ...

  6. 【修真院Java小课堂】Tiles框架简单介绍

    大家好,我是IT修真院上海分院第6期的学员,一枚正直纯洁善良的程序员 今天给大家分享一下,Tiles框架简单介绍 Tiles框架简单介绍 背景介绍 什么是Tiles Tiles 是一种JSP布局框架, ...

  7. 【修真院WEB小课堂】定时器有哪些用法?

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [定时器有哪些用 ...

  8. 【修真院pm小课堂】详谈用户体验五要素

    [修真院pm小课堂]详谈用户体验五要素 用户体验五要素在产品的工作中经常听到,那么他究竟是什么呢?怎样去使用呢? 一.战略层 明确商业目标和用户目标,解决两者之间的冲突,找到平衡点,确定产品原则和定位 ...

  9. 【修真院web小课堂】angular js常用指令 ng-blur、ng-change、ng-focus、ng-disabled是如何运用到表单验证中的?

    大家好,我是IT修真院武汉分院web第16期的学员孟晨,一枚正直纯洁善良的web程序员 今天给大家分享一下,修真院官网js(职业)任务八,深度思考中的知识点--angular js常用指令 ng-bl ...

  10. 【修真院web小课堂】请描述 BFC(Block Formatting Context) 及其如何工作

    请描述 BFC(Block Formatting Context) 及其如何工作 小课堂[北京-WEB-A组] 分享人:要来点本子吗 大家好,我是IT修真院北京分院第35期的学员,一枚正直.纯洁.善良 ...

最新文章

  1. java中@Qualifier(string)是什么用法
  2. lex 词法分析 linux,lex语言词法分析
  3. 2019.1.7 区块链论文翻译
  4. 牛客题霸 NC14 按之字形顺序打印二叉树
  5. 一直在构建工作空间_智能工作空间让Dropbox拥有无限扩展潜力
  6. PLSQL Developer学习笔记
  7. jmeter-正则表达式提取器
  8. 西门子S7-200 SMART控制步进电机(一)
  9. gg修改器免root下载
  10. 笔记本电脑清灰打硅脂后,开机一直黑屏,如何破?
  11. phpadmin的安装教程
  12. 干货深挖!从写简历,到面试、谈薪酬的那些技巧和防坑指南
  13. 老厉害了!2600亿,紫光集团南京再投半导体生产线
  14. 计组头哥实验 第2关 原码一位乘法器设计
  15. c语言周长和面积计算
  16. Android 游戏破解修改金币
  17. charts中各种图演示
  18. 计算机 手机原理是什么,什么是手机投屏,手机投屏到电脑上的原理
  19. 苏州大学在职研究生计算机专业,苏州大学在职研究生入学须知
  20. 19 款国产手机无一幸免:15 分钟破解人脸识别,打印眼镜让刷脸形同虚设

热门文章

  1. y-oms-wms-tms-bms 订单管理系统、仓库管理系统、运输管理系统、账单管理系统
  2. 360 技术岗秋招笔试原题(2022届)
  3. react之通俗易懂配置less
  4. Ballot evaluation
  5. SQL Server 查询 数据库 表格 大小
  6. 推荐的前端开源项目CDN加速服务
  7. 第1节 基本数据类型分析
  8. 输入一个整数,若为奇数则输出其平方根,否则输出其立方根(分别用单分支、双分支和条件运算实现)
  9. 订单下单成功后如何等待支付成功
  10. java 字体变形_字符串变形-Java