spring单例的bean是单例还是原型
转载请注明出处:https://blog.csdn.net/qq_27218667/article/details/99690798
有一次老大突然问spring管理的bean是单例还是多例,当时印象中还停留在struts2的线程安全,想都没想就回答了是原型后来发现是错的。
先说说单例原型的区别和多线程中的影响
单例:不管是懒汉模式还是饿汉模式,始终只有一个实例
原型:每次使用时都是一个新的实例
在多线程中的安全性
如果bean中有成员变量,且这个成员变量可以被修改,那么在多线程中,单例是不安全的;
但是如果这个类中没有成员变量,或者说这个成员变量只是可读不可改,那么单例和原型在多线程中都是安全的。
取舍
因为原型每次其实都是new一个新的实例,这个需要一定的开销,在多线程大数据量的操作中很轻易就会造成内存溢出,所以spring默认都是单例的,这个需要根据实际业务需求和数据量来取舍
设置
想要设置成原型,需要将相关依赖的bean都设置为原型,这个比较麻烦,所以spring提供一种代理的方式将bean设置为原型:
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE, proxyMode = ScopedProxyMode.TARGET_CLASS)
如有错误请务必指正,大家共同进步和发展
spring单例的bean是单例还是原型相关推荐
- 头条一面:Spring IOC容器中只存放单例Bean吗?
最近,很多小伙伴出去面试,感觉自己面的不是很理想,回来后,不少小伙伴把面试题做了记录发给我,让我给大家解析下,然后发出来.当我看到这些面试题时,快速在脑海中构建起了整个知识体系,从基础到框架.从分布式 ...
- Spring 为啥默认把 bean 设计成单例的?
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:在滴滴和头条干了 2 年后端开发,太真实-个人原创100W+访问量博客:点击前往,查看更多 熟悉Spring开发 ...
- Spring为啥默认把bean设计成单例的
熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton.prototype.request.session.global session.而且默认情况下是single ...
- Spring 为啥默认把bean设计成单例的?这篇讲的明明白白的
作者:小小木 juejin.im/post/5cab7ebf518825177637b2f9 熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton.prototyp ...
- Spring中bean的单例与多例
Spring中bean的单例与多例 前言 Spring中单例与多例 如何配置单例/多例 单例/多例Bean的使用事项 总结 前言 之前其实已经学习过对于单例模式的使用单例模式讲解,也用过一段时间的Sp ...
- Spring Bean配置默认为单实例 pring Bean生命周期
Bean默认的是单例的. 如果不想单例需要如下配置: <bean id="user" class="..." scope="singleton& ...
- python线程安全的单例_[python笔记] 单例的几种实现方式(线程安全)
单例实现方式: 1.单例装饰器; 2.使用类: 3.使用元类 1.单例装饰器(非线程安全) 通过装饰器使一个类变成单例类,但是并非线程安全的,多线程状态下,每个线程创建不同的实例,因为没有加线程锁,所 ...
- 单例设计模式-ThreadLocal线程单例
package com.learn.design.pattern.creational.singleton;/*** 是基于ThreadLocal的* 所以必不可少要使用这个类* * 我们看一下这个类 ...
- java中单例设计模式登记式单例类_java23种设计模式-创建型模式之单例模式
单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比较频 ...
最新文章
- Spring事务管理 与 SpringAOP
- Java模拟ATM运行过程(第一版)
- Spring (1) 认识Spring、 介绍Spring特点、解答为什么学习Spring
- 【零基础入门数据挖掘】-特征工程
- android 如何在线程缓存实体类
- python输入多个字符串、输入最长的一串_无重复字符的最长子串(Python之暴力求解)...
- JCO 自定义DestinationDataProvider
- [项目更新] 集成RabbitMQ队列与EventBus总线
- linux怎么删除exe文件夹,ubuntu linux 批量删除文件
- IOC操作Bean管理XML方式(注入外部bean)
- 从零开始入门 K8s | K8s 安全之访问控制
- python字符串转化为数字-python 中判断字符串能否转换为数字类型
- 缓存淘汰、缓存穿透、缓存击穿、缓存雪崩、数据库缓存双写一致性
- 对自我价值的高估,源自于对他人价值的否定
- k64 datasheet学习笔记3---Chip Configuration之System modules
- 20145324 20145325《信息安全系统设计基础》实验二 固件设计
- 永中office linux卸载,永中office Linux版
- 面向对象六大原则——依赖倒置原则
- mongoDB——metadata之我见
- n子棋,你能下赢电脑吗,来玩玩吧
热门文章
- apache php提示下载,apache正在下载php文件而不是显示它们。
- java里的sqlite在哪_设备上sqlite数据库的位置
- dk7与jdk8环境共存与切换
- Mysql安装的目录结构详解
- quartz可以指定方法名吗_2020象限仪流星雨肉眼可以看见吗?象限仪座流星雨观测方法...
- animate改变背景颜色_3D MAX2016视口背景设置里各参数的含义详解 - 3dmax基础操作入门教程-3dmax材质教程,3d材质贴图教程参数,vray材质参数,3dmax贴图教程...
- angular五大服务顺序_IATF16949五大工具介绍
- android 录音机 apk,实时录音机
- php调用文章至首页,WP如何在首页调用分类文章列表的详细教程
- jquery 圆点绕圆旋转_jquery 圆形旋转图片滚动切换效果