Spring配置文件中bean标签的scope属性

转自:https://fj-sh-chz.iteye.com/blog/1775149

singleton  (默认属性) 

Spring将Bean放入Spring IOC容器的缓存池中,并将Bean引用返回给调用者,spring IOC继续对这些Bean进行后续的生命管理。BeanFactory只管理一个共享的实例。所有对这个特定bean的实例请求,都导致返回这个唯一 bean实例的引用。 

即每次拿到的对象都是引用的同一个地址的对象。当一个bean被标识为singleton时候,spring的IOC容器中只会存在一个该bean。 


2.prototype 

Spring将Bean返回给调用者,调用者负责Bean后续生命的管理,Spring不再管理这些Bean的生命周期。 
每次对这个bean的实例请求都会导致一个新的实例的创建。当用户需要不受其他用户对象影响的对象或有类似的需求时,这是一个较理想的解决办法。 


即每次拿到的对象都是引用的不同地址的对象。相当于一个new的操作。清除prototype作用域的对象并释放任何prototype bean所持有的昂贵资源,都是客户端代码的职责 


以下的3种scope都使用的较少,类似于J2EE里面的request和session。在使用SpringMVC是可能会用到。 


3.request 

‍request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,配置实例: request、session、global session使用的时候首先要在初始化web的web.xml中做如下配置:如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可: 

‍<listener> 
   <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> 
</listener> 



4.session 


‍session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效 



5.global session 

‍global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用 



对于Action来说需要指明scope=”prototype”或singleton=”false”,因为Action是线程不安全的,可能会导致跳转的页面错误。 

对于带有数据成员变量的类需要指明scope=”prototype”或singleton=”false”。不然这样会导致多个线程共用同一个成员变量。 


有状态的bean都使用Prototype作用域,而对无状态的bean则应该使用singleton作用域。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284089.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转]Druid概述

目录 1.Apache Druid简介 2.Apache Druid架构 2.1 服务器类型 2.1.1 Master Server 2.1.2 Query 2.1.3 Data Server 2.2 外部依赖 2.2.1 Deep Storage 2.2.2 Metadata Storage 2.2.3 Zookeeper 2.3 存储设计 3.在HDP上安装Apache Druid 3.1 准备数据库 3.2 安装…

在 .NET MAUI 中如何更好地自定义控件

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;10分钟)今天&#xff0c;我想谈谈并向您展示在.NET MAUI中完全自定义控件的方法。在查看 .NET MAUI 之前&#xff0c;让我们回到几年前&#xff0c;回到 Xamarin.Forms 时代。那时&#xff0c;我们有很多自定义控件的…

【GlobalMapper精品教程】036:基于DEM的流域计算生成流域图

Globalmapper基于DEM的流域计算生成流域图教程。 文章目录一、加载DEM二、流域分析一、加载DEM 加载配套实验数据。 二、流域分析 GM中的流域分析工具位于分析→生成流域&#xff0c;如下所示&#xff1a; 参数设置如下&#xff1a; 流域计算结果&#xff1a;

html之file标签 --- 图片上传前预览 -- FileReader

记得以前做网站时&#xff0c;曾经需要实现一个图片上传到服务器前&#xff0c;先预览的功能。当时用html的<input type"file"/>标签一直实现不了&#xff0c;最后舍弃了这个标签&#xff0c;使用了其他方式来实现了这个功能。 今天无意发现了一个知识点&#…

Android Studio3.0简介

Android Studio 3.0.0 Android Studio 3.0.0 (2017年10月)是一个主要版本&#xff0c;包括各种新功能和改进 Android插件的Gradle 3.0.0 • 支持Android 8.0 • 支持Java 8库和Java 8语言功能&#xff08;没有Jack编译器&#xff09; • 支持Android测试支持库1.0&#xff08;A…

嵌入式linux面试题解析(二)——C语言部分三

嵌入式linux面试题解析&#xff08;二&#xff09;——C语言部分三1、下面的程序会出现什么结果#include <stdio.h>#include <stdlib.h>#include <string.h>void getmemory(char *p){ p(char *) malloc(100); strcpy(p,”hello world”);}int main( ){…

什么是JavaBean、Bean? 什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?

前言&#xff1a; 在Java开发中经常遇到这些概念问题&#xff0c;有的可能理解混淆&#xff0c;有的可能理解不到位&#xff0c;特此花了很多时间理顺了这些概念。不过有些概念实际开发中并没有使用到&#xff0c;可能理解还不够准确&#xff0c;只能靠后续不断纠正了。 1、什么…

【GlobalMapper精品教程】037:构建泰森多边形(Thiessen Polygon)实例精解

泰森多边形是进行快速插值和分析地理实体影响区域的常用工具。例如,用离散点的性质描述多边形区域的性质,用离散点的数据计算泰森多边形区域的数据。泰森多边形可用于定性分析、统计分析和临近分析等。 文章目录 一、泰森多边形的概念二、泰森多边形的特点三、泰森多边形构建…

WPF 实现 Gitee 泡泡菜单「完」

WPF 实现 Gitee 泡泡菜单「完」气泡菜单「完」作者&#xff1a;WPFDevelopersOrg原文链接&#xff1a; https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用大于等于.NET40&#xff1b;Visual Studio 2022;项目使用 MIT 开源许可协议&#xff1b;需要实现泡泡菜单需…

BZOJ 4516: [Sdoi2016]生成魔咒 [后缀自动机]

4516: [Sdoi2016]生成魔咒 题意&#xff1a;询问一个字符串每个前缀有多少不同的子串 做了一下SDOI2016R1D2&#xff0c;题好水啊随便AK 强行开map上SAM 每个状态的贡献就是\(Max(s)-Min(s)1\) 插入的时候维护一下就行了 #include <iostream> #include <cstdio> #i…

Fiddler抓包5-接口测试(Composer)

前言 Fiddler最大的优势在于抓包&#xff0c;我们大部分使用的功能也在抓包的功能上&#xff0c;fiddler做接口测试也是非常方便的。 对应没有接口测试文档的时候&#xff0c;可以直接抓完包后&#xff0c;copy请求参数&#xff0c;修改下就可以了。 一、Composer简介 点开右侧…

【GlobalMapper精品教程】038:模拟水位上升(洪水淹没分析)案例教程

基于数字高程模型 ( DEM )格网模型,实现给定水深情况下洪水淹没区的计算模型,讨论洪水淹没演进过程可视化实现的关键技术,以三维可视化方式,动态而形象地模拟在指定洪水水位下的洪水淹没演进过程。 文章目录 一、洪水淹没效果二、洪水淹没实现三、查询淹没区域面积参考教程…

【.NET6+Avalonia】开发支持跨平台的仿WPF应用程序以及基于ubuntu系统的演示

前言&#xff1a;随着跨平台越来越流行&#xff0c;.net core支持跨平台至今也有好几年的光景了。但是目前基于.net的跨平台&#xff0c;大多数还是在使用B/S架构的跨平台上&#xff1b;至于C/S架构&#xff0c;大部分人可能会选择QT进行开发&#xff0c;或者很早之前还有一款M…

SOA架构和MSA架构之间的关系

目录 一、传统架构&#xff1a;简单单体模式 二、分布式架构&#xff1a;面向服务架构&#xff08;SOA&#xff09; 1、服务与SOA 2、SOA战略 3、SOA的两大基石&#xff1a;RPC和MQ 三、分布式架构&#xff1a;微服务架构&#xff08;MSA&#xff09; 什么是微服务 微服…

Linux系统文件与目录权限管理

Linux文件目录权限管理 一、Linux文件属性及权限 1、Linux文件及目录权限及属性说明 &#xff08;1&#xff09;权限及属性说明 &#xff08;2&#xff09;文件权限说明 三种权限说明&#xff1a;r 读 read w 写 write x 执行 excute 2、修改文件属主及属组 &#xff08;1&am…

一个文本分词程序

WordMap类从分词库中读入分词 将分词存入unordered_map<std::string, int> 中 #pragma once #include<istream> #include<unordered_map> #include<string> #include<ctime> class WordMap { public:WordMap(const std::string& filename);…

scala学习手记28 - Execute Around模式

我们访问资源需要关注对资源的锁定、对资源的申请和释放&#xff0c;还有考虑可能遇到的各种异常。这些事项本身与代码的逻辑操作无关&#xff0c;但我们不能遗漏。也就是说进入方法时获取资源&#xff0c;退出方法时释放资源。这种处理就进入了Execute Around模式的范畴。 在s…

【时序数据库InfluxDB】Windows环境下配置InfluxDB+数据可视化,以及使用 C#进行简单操作的代码实例...

前言&#xff1a;如题。直接上手撸&#xff0c;附带各种截图&#xff0c;就不做介绍了。1、influxDB的官网下载地址 https://portal.influxdata.com/downloads/打开以后&#xff0c;如下图所示&#xff0c;可以选择版本号&#xff0c;以及平台。此处咱们选择windows平台。不过…

官宣 微软跨平台 UI 框架 .NET MAUI 6 正式发布

微软宣布 .NET MAUI 已正式 GA。 .NET MAUI (.NET Multi-platform App UI) 是一个跨平台 UI 框架&#xff08;前身是 Xamarin.Forms&#xff09;&#xff0c;用于通过 C# 和 XAML 创建原生移动和桌面应用。基于 .NET MAUI&#xff0c;开发者可在单个共享代码库中创建同时支持 A…

92. Reverse Linked List II

Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1->2->3->4->5->NULL, m 2 and n 4, return 1->4->3->2->5->NULL. Note:Given m, n satisfy the following condition:1 ≤ m ≤ n ≤ lengt…