精通有状态vs无状态(Stateful vs Stateless)

本文深入探讨了有状态和无状态的概念,包括基本概念、单例模式中的状态、EJB和Spring中的状态管理以及Servlet、Struts中的应用。建议在设计应用程序时,尽可能使用无状态服务层,将状态保留在Web层,以提高可伸缩性和线程安全性。
摘要由CSDN通过智能技术生成

精通有状态vs无状态(Stateful vs Stateless)—Immutable模式之姐妹篇

Peter Wei

 

我相信有不少人还不明白有状态和无状态(Stateful and Stateless)的概念,那么我们今天就来谈谈有状态和无状态,一方面不断总结提高自我,另一方面兼扫盲。这是Immutable不变模式的姐妹篇,大家可以参照着读。

Immutable不变模式的分析blog: http://www.javaeye.com/topic/959751

 

基本概念:

有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。

 

无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象.不能保存数据,是不变类,是线程安全的。

 

代码更好理解:

 

/**

 * 有状态bean,state,user等属性,并且user有存偖功能,是可变的。

 *

 * @author Peter Wei

 *

 */

public class StatefulBean {

 

    public int state;

    // 由于多线程环境下,user是引用对象,是非线程安全的

    public User user;

 

    public int getState() {

       return state;

    }

 

    public void setState(int state) {

       this.state = state;

    }

 

    public User getUser() {

       return user;

    }

 

    public void setUser(User user) {

       this.user = user;

    }

}

 

/**

 * 无状态bean,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值