mysql有状态无状态_有状态和无状态的对象区别
每次的总结,都是一种进步,把自己理解的东西记录下来不容易,让别人看懂更不容易。
第一:基本概念:
1、有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。
2、无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象.不能保存数据,是不变类,是线程安全的。
第二:看看代加深影响:
/*** 有状态bean,有state,user等属性,并且user有存偖功能,是可变的。
*
*@authorPeter Wei
**/
public classStatefulBean {public intstate;//由于多线程环境下,user是引用对象,是非线程安全的
publicUser user;public intgetState() {returnstate;
}public void setState(intstate) {this.state =state;
}publicUser getUser() {returnuser;
}public voidsetUser(User user) {this.user =user;
}
}/*** 无状态bean,不能存偖数据。因为没有任何属性,所以是不可变的。只有一系统的方法操作。
*
*@authorPeter Wei
**/
public classStatelessBeanService {//虽然有billDao属性,但billDao是没有状态信息的,是Stateless Bean.
BillDao billDao;publicBillDao getBillDao() {returnbillDao;
}public voidsetBillDao(BillDao billDao) {this.billDao =billDao;
}public ListfindUser(String Id) {return null;
}
}
第三:Spring中的有状态(Stateful)和无状态(Stateless)
1.通过上面的分析,相信大家已经对有状态和无状态有了一定的理解。无状态的Bean适合用不变模式,技术就是单例模式,这样可以共享实例,提高性能。有状态的Bean,多线程环境下不安全,那么适合用Prototype原型模式。Prototype: 每次对bean的请求都会创建一个新的bean实例。
2.默认情况下,从Spring bean工厂所取得的实例为singleton(scope属性为singleton),容器只存在一个共享的bean实例。
3.理解了两者的关系,那么scope选择的原则就很容易了:有状态的bean都使用prototype作用域,而对无状态的bean则应该使用singleton作用域。
4.如Service层、Dao层用默认singleton就行,虽然Service类也有dao这样的属性,但dao这些类都是没有状态信息的,也就是相当于不变(immutable)类,所以不影响。Struts2中的Action因为会有User、BizEntity这样的实例对象,是有状态信息的,在多线程环境下是不安全的,所以Struts2默认的实现是Prototype模式。在Spring中,Struts2的Action中,scope要配成prototype作用域。
第四:Servlet是单例模式1.Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web 容器负责的。一个Servlet类在Application中只有一个实例存在,也就是有多个线程在使用这个实例。这是单例模式的应用。无状态的单例是线程安全的,但我们如果在Servlet里用了实例变量,那么就变成有状态了,是非线程安全的。如下面的用法就是不安全的,因为user,out都是有状态信息的。
/*** 非线程安全的Servlet。
*@authorPeter Wei
**/
public classUnSafeServlet HttpServlet{
User user;
PrintWriter out;public void doGet (HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException{//do something...
}
}
Out,Request,Response,Session,Config,Page,PageContext是线程安全的,Application在整个系统内被使用,所以不是线程安全的.
第五:SpringMvc默认是单例默认,Struts2默认的实现是Prototype模式。
mysql有状态无状态_有状态和无状态的对象区别相关推荐
- 魅族 虚拟位置服务状态:未运行_带功率表快充状态一目了然,魅族超充USBC移动电源即将发售...
5月8日魅族举行线上发布会,发布了新一代旗舰魅族17系列机型,并推出了多款充电品类配件,其中一款是全新的魅族双向快充移动电源,名称为:"魅族超充 USB-C 移动电源",容量是很常 ...
- 超微服务器主板启动无反应_我如何构建无服务器启动
超微服务器主板启动无反应 by Vikram Rangnekar 由Vikram Rangnekar 我如何构建无服务器启动 (How I Built a Serverless Startup) Le ...
- mysql创建非聚集索引_聚集索引和非聚集索引的区别
作者:riemann riemann.blog.csdn.net/article/details/90324846 一.深入浅出理解索引结构 实际上,可以把索引理解为一种特殊的目录.微软的SQL SE ...
- sim卡没坏但苹果手机无服务_手机突然显示无SIM卡?这样做就能恢复~
大家有没经历过明明SIM卡在卡槽里放得好好的,手机却突然显示无SIM卡的状况?没有了SIM卡手机就失去了灵魂,打电话.上网的功能都不能用了.这到底是怎么一回事儿?让小翼帮你来解答~ 什么是SIM卡? ...
- mysql关系型数据库的优点和缺点_关系型数据库和非关系型数据库的区别和特点...
关系型数据库 采用关系模型来组织数据结构的数据库(二维表) cle DB2 SQLServer Mysql SQLite都是关系型数据库 优点:容易理解,它的逻辑类似常见的表 ...
- mysql存储文件用什么类型_块存储、文件存储、对象存储的区别是什么?
块存储: 需要实现Linux的Block Device的接口或者QEMU提供的Block Driver接口.提供随机读写,可以像使用物理硬盘一样格式化并建立文件系统来使用块存储,块存储可用于绝大部分通 ...
- excel和mysql的区别是什么_请问数据库和电子表格之间有什么区别
展开全部 1.不同的安全: 数据62616964757a686964616fe59b9ee7ad9431333433653932库的安全性比Excel好很多.至少当我在1653编辑4102到一半的数据 ...
- java无框架_从框架到无框架[关闭]
我完全了解你的感受 . 我在4〜5年前开始使用PHP(我来自Delphi,lol),并开始使用纯PHP . 我所拥有的是"CMS面板之类",它只读取所有表格字段并创建表格 . 在某 ...
- spring期刊状态_无状态Spring安全性第2部分:无状态认证
spring期刊状态 Spring Stateless Security系列的第二部分是关于以无状态方式探索身份验证的方法. 如果您错过了有关CSRF的第一部分,可以在这里找到. 因此,在谈论身份验证 ...
最新文章
- java正则表达式 匹配%号_java正则表达式匹配带有括号的电话号为什么匹配不上...
- C++中标准模板库std::pair的实现
- linux命令行操作之文件操作总结
- rsync 远程同步——安全高效的异地备份策略
- 制作css开关,纯css实现开关效果
- java中springdi_java中spring入门
- 第二十五期:知乎用Go替代Python,说明了啥
- linux文件系统挂载不上,nfs文件系统在linux下挂载不上的解决办法
- TBXML常用API
- 【并发技术16】线程同步工具Exchanger的使用
- 001 - JavaScript Array String
- zynq开发系列3:GPIO连接MIO通过按键控制LED灯亮起
- python按位与怎么算_python 的按位与、或、异或 运算
- 南方科技大学计算机系师资,于仕琪 - 教师个人主页 - 南方科技大学
- linux自启动配置文件,linux 开机自启动设置
- Java程序设置本地代理
- 人工智能 python 考证_写人作文
- android edittext 输入手机号码格式变化
- 感谢各位iPhone12机主,苹果又高了
- VS x86 x64 anycpu 编译运行对照表
热门文章
- 网站内容批量抓取和《著作权法》
- ip地址和MAC地址的捆绑
- 通过SecureCRT访问亚马逊Amazon EC2主机
- C++11多线程03
- NIO 02 (转)
- VS2012项目中使用CocoStudio相关文件的设置
- Silverlight --- Behavior技术(三)
- vc++ cfile 文件操作
- 大数据之-Hadoop3.x_MapReduce_WordCount案例_Debug调试---大数据之hadoop3.x工作笔记0092
- STM32工作笔记005---STM32芯片解读