转载请注明出处: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是单例还是原型相关推荐

  1. 头条一面:Spring IOC容器中只存放单例Bean吗?

    最近,很多小伙伴出去面试,感觉自己面的不是很理想,回来后,不少小伙伴把面试题做了记录发给我,让我给大家解析下,然后发出来.当我看到这些面试题时,快速在脑海中构建起了整个知识体系,从基础到框架.从分布式 ...

  2. Spring 为啥默认把 bean 设计成单例的?

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:在滴滴和头条干了 2 年后端开发,太真实-个人原创100W+访问量博客:点击前往,查看更多 熟悉Spring开发 ...

  3. Spring为啥默认把bean设计成单例的

    熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton.prototype.request.session.global session.而且默认情况下是single ...

  4. Spring 为啥默认把bean设计成单例的?这篇讲的明明白白的

    作者:小小木 juejin.im/post/5cab7ebf518825177637b2f9 熟悉Spring开发的朋友都知道Spring提供了5种scope分别是singleton.prototyp ...

  5. Spring中bean的单例与多例

    Spring中bean的单例与多例 前言 Spring中单例与多例 如何配置单例/多例 单例/多例Bean的使用事项 总结 前言 之前其实已经学习过对于单例模式的使用单例模式讲解,也用过一段时间的Sp ...

  6. Spring Bean配置默认为单实例 pring Bean生命周期

    Bean默认的是单例的. 如果不想单例需要如下配置: <bean id="user" class="..." scope="singleton& ...

  7. python线程安全的单例_[python笔记] 单例的几种实现方式(线程安全)

    单例实现方式: 1.单例装饰器; 2.使用类: 3.使用元类 1.单例装饰器(非线程安全) 通过装饰器使一个类变成单例类,但是并非线程安全的,多线程状态下,每个线程创建不同的实例,因为没有加线程锁,所 ...

  8. 单例设计模式-ThreadLocal线程单例

    package com.learn.design.pattern.creational.singleton;/*** 是基于ThreadLocal的* 所以必不可少要使用这个类* * 我们看一下这个类 ...

  9. java中单例设计模式登记式单例类_java23种设计模式-创建型模式之单例模式

    单例模式(Singleton) 单例对象(Singleton)是一种常用的设计模式.在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在.这样的模式有几个好处: 1.某些类创建比较频 ...

最新文章

  1. Spring事务管理 与 SpringAOP
  2. Java模拟ATM运行过程(第一版)
  3. Spring (1) 认识Spring、 介绍Spring特点、解答为什么学习Spring
  4. 【零基础入门数据挖掘】-特征工程
  5. android 如何在线程缓存实体类
  6. python输入多个字符串、输入最长的一串_无重复字符的最长子串(Python之暴力求解)...
  7. JCO 自定义DestinationDataProvider
  8. [项目更新] 集成RabbitMQ队列与EventBus总线
  9. linux怎么删除exe文件夹,ubuntu linux 批量删除文件
  10. IOC操作Bean管理XML方式(注入外部bean)
  11. 从零开始入门 K8s | K8s 安全之访问控制
  12. python字符串转化为数字-python 中判断字符串能否转换为数字类型
  13. 缓存淘汰、缓存穿透、缓存击穿、缓存雪崩、数据库缓存双写一致性
  14. 对自我价值的高估,源自于对他人价值的否定
  15. k64 datasheet学习笔记3---Chip Configuration之System modules
  16. 20145324 20145325《信息安全系统设计基础》实验二 固件设计
  17. 永中office linux卸载,永中office Linux版
  18. 面向对象六大原则——依赖倒置原则
  19. mongoDB——metadata之我见
  20. n子棋,你能下赢电脑吗,来玩玩吧

热门文章

  1. apache php提示下载,apache正在下载php文件而不是显示它们。
  2. java里的sqlite在哪_设备上sqlite数据库的位置
  3. dk7与jdk8环境共存与切换
  4. Mysql安装的目录结构详解
  5. quartz可以指定方法名吗_2020象限仪流星雨肉眼可以看见吗?象限仪座流星雨观测方法...
  6. animate改变背景颜色_3D MAX2016视口背景设置里各参数的含义详解 - 3dmax基础操作入门教程-3dmax材质教程,3d材质贴图教程参数,vray材质参数,3dmax贴图教程...
  7. angular五大服务顺序_IATF16949五大工具介绍
  8. android 录音机 apk,实时录音机
  9. php调用文章至首页,WP如何在首页调用分类文章列表的详细教程
  10. jquery 圆点绕圆旋转_jquery 圆形旋转图片滚动切换效果