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

Java单例多例理解

1. 什么是单例多例:
所谓单例就是所有的请求都用一个对象来处理,比如我们常用的service和dao层的对象通常都是单例的,而多例则指每个请求用一个新的对象来处理,比如action; 
2. 如何产生单例多例:
    在通用的SSH中,单例在spring中是默认的,如果要产生多例,则在配置文件的bean中添加scope="prototype"; 
3. 为什么用单例多例:
    之所以用单例,是因为没必要每个请求都新建一个对象,这样子既浪费CPU又浪费内存;
   之所以用多例,是为了防止并发问题;即一个请求改变了对象的状态,此时对象又处理另一个请求,而之前请求对对象状态的改变导致了对象对另一个请求做了错误的处理;
    用单例和多例的标准只有一个:
    当对象含有可改变的状态时(更精确的说就是在实际应用中该状态会改变),则多例,否则单例;
4. 何时用单例?何时用多例?
    对于struts2来说,action必须用多例,因为action本身含有请求参数的值,即可改变的状态;
  而对于STRUTS1来说,action则可用单例,因为请求参数的值是放在actionForm中,而非action中的;

   另外要说一下,并不是说service或dao一定是单例,标准同第3点所讲的,就曾见过有的service中也包含了可改变的状态,同时执行方法也依赖该状态,但一样用的单例,这样就会出现隐藏的BUG,而并发的BUG通常很难重现和查找;
















本文转自lzf0530377451CTO博客,原文链接:http://blog.51cto.com/8757576/1845301 ,如需转载请自行联系原作者






相关文章:

  • SQL Server 2005中解决死锁问题
  • PIX配置手册一(简单配置命令)
  • sql server 根据指定字段排序编号 update 与 order by 联合使用
  • MD5 报文摘要算法
  • 获取 Android 设备的唯一标识码
  • Android Studio 3.0项目迁移所遇到的坑
  • (转)ObjectiveC 深浅拷贝学习
  • grep过滤用法介绍(三)
  • Android Activity和Intent机制 学习笔记(显示网页,显示地图,打电话)
  • 07-JS中 li 排序
  • [WCF安全系列]从两种安全模式谈起
  • EIGRP路由协议中邻居的发现以及恢复
  • vim配色方案
  • Spring-基于构造函数的依赖注入
  • 快速清理系统垃圾和迅雷5.8版以前的隐藏数据库
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • 2017-08-04 前端日报
  • C++入门教程(10):for 语句
  • CSS 专业技巧
  • docker-consul
  • Git 使用集
  • Idea+maven+scala构建包并在spark on yarn 运行
  • IOS评论框不贴底(ios12新bug)
  • JavaScript函数式编程(一)
  • Laravel 菜鸟晋级之路
  • Linux Process Manage
  • maven工程打包jar以及java jar命令的classpath使用
  • node和express搭建代理服务器(源码)
  • SpringBoot几种定时任务的实现方式
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • SQLServer之索引简介
  • windows-nginx-https-本地配置
  • 安卓应用性能调试和优化经验分享
  • 搭建gitbook 和 访问权限认证
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 和 || 运算
  • 聚簇索引和非聚簇索引
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 蓝海存储开关机注意事项总结
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 硬币翻转问题,区间操作
  • 用Visual Studio开发以太坊智能合约
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • #QT项目实战(天气预报)
  • (04)odoo视图操作
  • (1)STL算法之遍历容器
  • (6)设计一个TimeMap
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (三十五)大数据实战——Superset可视化平台搭建
  • (四)Controller接口控制器详解(三)
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net Application的目录
  • .NET 分布式技术比较