当前位置: 首页 > news >正文

Spring IOC原理

Spring IOC即“控制反转”,是一种设计思想。将对象的创建和对象之间依赖关系的维护交给容器来负责,以实现对象与对象之间松耦合的目的。

Spring IOC概述

Spring通过配置文件或者注解来描述Bean和Bean之间的依赖关系,利用Java的反射功能实例化Bean之间的依赖关系。Spring的IOC容器在完成这些底层工作的基础上,还提供了Bean实例缓存管理、Bean生命周期管理、Bean实例代理、事件发布和资源装载等高级服务。

Spring Bean的装配过程

Spring在启动时会从XML配置文件或注解中读取应用程序提供的Bean配置信息,并在Spring Bean容器中生成一份相应的Bean配置注册表;然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,并将Bean实例载入Bean缓存池中,为上层服务提供基础的运行环境。其中Bean缓存池采用HashMap实现。

Spring Bean的作用域

Spring为Bean定义了5种作用域,分别为Singleton(单例)、Prototype(原型)、Request(请求级别)、Session(会话级别)和Global Session(全局会话)
Singleton:Singleton是单例模式,当实例类型为单例模式时,在Spring IOC容器种只会存在一个共享的Bean实例,无论有多少个Bean引用它,都始终指向同一个Bean对象。该模式在多线程下是不安全的。Singleton作用域是Spring中的默认作用域。
Prototype:Prototype是原型模式,每次通过Spring容器获取Prototype定义的Bean时,容器都将创建一个新的Bean实例,每个Bean实例都有自己的属性和状态,而Singleton全局只有一个对象。因此,对有状态的Bean经常使用Prototype作用域,而对无状态的Bean则使用Singleton作用域。
Request:Request指在一次HTTP请求中容器会返回该Bean的同一个实例,对不同的HTTP请求则会创建新的Bean实例,并且该Bean实例仅在当前HTTP请求内有效,在当前HTTP请求结束后,该Bean实例也将随之销毁。
Session:Session指在一次HTTP Session中,容器会返回该Bean的同一个实例,对不同的Session请求则会创建新的Bean实例,该Bean实例仅在当前的Session内有效。
与request作用域一样,你可以根据需要放心的更改所创建实例的内部状态,而别的HTTP Session中的Bean实例, 将不会看到这些特定于某个HTTP Session的状态变化。 当HTTP Session最终被废弃的时候,在该HTTP Session作用域内的bean也会被废弃掉。
Global Session:Global Session指在一个全局的HTTP Session中容器会返回该Bean的同一个实例,且仅在使用Protlet Context时有效。

相关文章:

  • 【协议】XMLHttpRequest的梳理和总结
  • 高并发大游戏如何选择阿里云服务器配置?
  • MySQL窗口函数(MySQL Window Functions)
  • 安全审查常见要求
  • 橘子学Mybatis07之Mybatis关于缓存的设计
  • 【计算机硬件】2、指令系统、存储系统和缓存
  • 力扣(144. 二叉树的前序遍历94.二叉树的中序遍历145. 二叉树的后序遍历)
  • 阿里云国外服务器价格表
  • OSI七层协议和五层协议
  • 美颜技术对比:如何根据项目选择不同的美颜SDK?
  • Win10恢复环境是什么?
  • Blender——将模型及其所有纹理与材质导入unity
  • [Python练习]使用Python爬虫爬取豆瓣top250的电影的页面源码
  • 怎么修改或移除WordPress后台仪表盘概览底部的版权信息和主题信息?
  • What is `HttpServletRequestWrapper` does?
  • Mac ❀ 如何在MacOS上安装pip软件包
  • 为什么要用B+树
  • 初识MySQL
  • chrome 307状态码
  • Elasticsearch:聊天机器人教程(二)
  • 上海国际电影节纪录片单元,还世界真实色彩
  • 中哥两国元首共同见证签署《中华人民共和国政府与哥伦比亚共和国政府关于共同推进丝绸之路经济带和21世纪海上丝绸之路建设的合作规划》
  • 习近平会见智利总统博里奇
  • 新能源汽车,告别混乱创新
  • 上海首发经济“卷”到会展业,浦东签约三个年度“首展”
  • 这个“超强致癌细菌”,宝宝感染率高达40%,预防却很简单