Spring学习(二):Spring支持的5种Bean Scope
序言
Scope是定义Spring如何创建bean的实例的。Spring容器最初提供了两种bean的scope类型:singleton和prototype,但发布2.0以后,又引入了另外三种scope类型:request、session和global session,这三种只能在web 应用中才可以使用。
在创建bean的时候可以带上scope属性,scope有下面几种类型:
概念理解
Spring官方文档表示有如下5种类型:
singleton:
这是Spring默认的scope,表示Spring容器只创建唯一一个bean的实例,所有该对象的引用都共享这个实例,并且Spring在创建第一次后,会在Spring的IoC容器中缓存起来,之后不再创建,就是设计模式中的单例模式的形式。
并且对该bean的所有后续请求和引用都将返回该缓存中的对象实例。一般情况下,无状态的bean使用该scope。
prototype:
代表线程每次调用或请求这个bean都会创建一个新的实例。一般情况下,有状态的bean使用该scope。
request:
每次http请求将会有各自的bean实例,类似于prototype。
也就是说每个request作用域内的请求只创建一个实例。
session:
在一个http session中,一个bean定义对应一个bean实例。也就是说每个session作用域内的请求只创建一个实例。
global session:
在一个全局的http session中,一个bean定义对应一个bean实例。
但是,这个scope只在porlet的web应用程序中才有意义,它映射到porlet的global范围的session,如果普通的web应用使用了这个scope,容器会把它作为普通的session作用域的scope创建。
注: 再次说明spring的默认scope(bean作用域)是singleton
使用方式
创建bean的时候如何指定其作用域呢?
XML方式:
< bean id = “accountService” class = “com.foo.DefaultAccountService” scope = “prototype” />
注解方式:
@Component
@Scope("prototype")
public class User{
…………
}
参考书籍:
Spring官网:https://docs.spring.io/spring/docs/3.0.0.M3/reference/html/ch04s04.html
Spring学习(二):Spring支持的5种Bean Scope的更多相关文章
- Spring MVC内置支持的4种内容协商方式【享学Spring MVC】
每篇一句 十个光头九个富,最后一个会砍树 前言 不知你在使用Spring Boot时是否对这样一个现象"诧异"过:同一个接口(同一个URL)在接口报错情况下,若你用rest访问,它 ...
- 解释Spring支持的几种bean的作用域?
Spring框架支持以下五种bean的作用域: singleton :bean在每个Spring ioc 容器中只有一个实例. prototype:一个bean的定义可以有多个实例. request: ...
- 解释 Spring 支持的几种 bean 的作用域?
Spring 框架支持以下五种 bean 的作用域:singleton : bean 在每个 Spring ioc 容器中只有一个实例.prototype:一个 bean 的定义可以有多个实例.req ...
- Spring学习(十一)-----Spring使用@Required注解依赖检查
Spring学习(九)-----Spring依赖检查 bean 配置文件用于确定的特定类型(基本,集合或对象)的所有属性被设置.在大多数情况下,你只需要确保特定属性已经设置但不是所有属性.. 对于这种 ...
- Spring学习(六)-----Spring使用@Autowired注解自动装配
Spring使用@Autowired注解自动装配 在上一篇 Spring学习(三)-----Spring自动装配Beans示例中,它会匹配当前Spring容器任何bean的属性自动装配.在大多数情况下 ...
- spring学习二:jdbc相关回顾以及spring下dao
目录: Part一:回顾java web部分的jdbc.事务.连接池和dbutils工具等 : Part二:spring的JdbcTemplate使用: Part三:spring的事务处理: Part ...
- Spring学习(二)--装配Bean
一.Spring装配机制 Spring提供了三种主要的装配机制: 1.在XML中进行显示配置 2.在Java中进行显示配置 3.隐式的bean发现机制和自动装配--自动化装配bean Spring可以 ...
- Spring学习之Spring与Mybatis的两种整合方式
本机使用IDEA 2020.1.MySql 8.0.19,通过Maven进行构建 环境准备 导入maven依赖包 <dependencies> <dependency> < ...
- Spring学习(七)-----Spring Bean的5种作用域
在Spring中,bean作用域用于确定哪种类型的 bean 实例应该从Spring容器中返回给调用者.bean支持的5种范围域: 单例(singleton) - 每个Spring IoC 容器返回一 ...
随机推荐
- Windows上安装配置SSH教程(7)——几种方式对比
服务端:Windows XP 客户端:Windows 10 由于Cygwin也可以安装OpenSSH,所以客户端其实可以直接使用Cygwin安装OpenSSH,那么在Windows下使用SCP(安全拷 ...
- 小白学习Python之路---re模块学习和挑战练习
本节大纲: 1.正则表达式 2.re模块的学习 3.速记理解技巧 4.挑战练习--开发一个简单的python计算器 5.心得总结 6.学习建议 正则表达式: 正则表达式,又称规则表达式.(英语:Reg ...
- Django-restframework 之认证源码分析
Django-restframework 源码分析之认证 前言 最近学习了 django 的一个 restframework 框架,对于里面的执行流程产生了兴趣,经过昨天一晚上初步搞清楚了执行流程(部 ...
- c#在pictureBox控件上绘制多个矩形框及删除绘制的矩形框
在pictureBox上每次只绘制一个矩形框,绘制下一个矩形框时上次绘制的矩形框取消,代码如链接:https://www.cnblogs.com/luxiao/p/5625196.html 在绘制矩形 ...
- 改造断路器集群监控Hystrix Turbine实现自动注册消费者、实时监控多个服务
在上一篇文章中,我们搭建了Hystrix Dashoard,对指定接口进行监控.但是只能对一个接口进行监听,功能比较局限: Turbine:汇总系统内多个服务的数据并显示到 Hystrix Dashb ...
- 什么是CSS
CSS是Cascading Style Sheet的缩写.译作”层叠样式表单“.是用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言.使用CSS样式可以控制许多仅使用HTML无法控 ...
- 涨姿势:抛弃字母、数字和下划线写SHELL
PHP中异或 (^) 的概念 <?php echo"A"^"?";?> <?php echo"A"^"?&quo ...
- Odoo11入门请假单模块学习教程源码
欢迎转载,但必须明显标注转载地址. 系统:Windows10 版本:Odoo11 一.创建模块 1.创建一个模块的骨架结构目录(在windows 的 CMD中) E:\Odoo 11.0> py ...
- vivo机器如何无需root激活XPOSED框架的流程
在大多运行室的引流或者业务操作中,理论上需要使用安卓的神一般的Xposed框架,上周我们运行室购来了一批新的vivo机器,理论上都是基于7.0以上系统版本,理论上不能够获得root的su权限,虽然一部 ...
- 一目了然呀的VS2017 Live Test
刚刚试用了一下VS2017中的单元测试,发现,这一次,覆盖测试会自动标记出来.不用像以前一样要他细检查了.这次会自动帮你全部标记出来. 新建单元测试,使用MS的单元测试方案(VSTS使用的时候方便.) ...