无状态的bean和有状态的bean

来源:互联网 发布:淘宝怎么看卖家销量 编辑:程序博客网 时间:2024/05/16 14:26

最近重新温故一下Javabean, 整理一下bean状态的笔记,有不对的地方希望广大猿友指正啊。

1、在web开发中,bean是否有状态对于bean的生命周期有影响。多大影响还没仔细考虑。

2、有状态的bean,具有数据存储功能。无状态的bean,只有普通的对数据的操作方法,而没有存储功能。

有状态的bean不应该被线程共享,无状态的bean可以被线程共享。

有状态的bean

3、web开发中,

集合啊,用于与数据库交互的存储数据的bean 如user等bean,均是有状态的bean。

而仅仅用于操作其他资源的bean,如userDao,就是无状态的bean。

4、web开发的会话中:

有状态的会话bean:在每个用户的会话生命周期内,该用户都有自己的一个特定的实例,是不会与其他用户共享的,这个bean保存了用户的信息和状态。一旦用户退出或其他情况下会话结束,这个bean的生命周期就结束。

无状态的会话bean:该bean一旦被实例化就会放入会话池,每个用户可以共用该bean。不管使用它的某个用户状态如何,这个bean都可能存在于会话池中供其他用户使用。该bean不能保存任何用户的信息和状态。

5、有状态的bean在多线程环境中是线程不安全的,无状态的bean在多线程环境中是线程安全的。

6、spring中:

有状态的Bean,多线程环境下不安全,那么适合用Prototype原型模式,当然,由于spring使用了ThreadLocal进行多线程处理,绝大多数bean都可以声明为singleton作用域。这是后话

无状态的Bean适合单例模式(singleton),这样可以共享实例,提高性能。





原创粉丝点击