您的位置:首页 > 编程语言 > Java开发

Spring多利模式 注解@Scope("prototype")和xml配置scope="prototype"

2016-06-17 13:36 716 查看
这里牵扯到单利模式的线程安全的设计。

我们知道sping ioc注入的bean;一般都是无状态的【dao,service等,这种不会牵涉到值或者状态改变的情况】,也就是在多线程下可以基本保证线程安全的;但是,有些情况下可能是有状态的;有状态的bean ,是要注意线程安全的;spring是有考虑到这方面的需求的;prototype
原型类型,应运而生;

1. 首先说下spring多例模式的两种配置方式: 一个是代码添加注解的,一个是配置xml中bean的范围:

1.1  xml配置:

<bean id="virtualProductService" class="com.san.mpa.service.VirtualProductService" scope="prototype">
1.2 注解配置:

@Scope("prototype")
public class CustInfoList extends HttpServlet {}
2. 为什么要使用prototype,分析一下原因

2.1有状态会话bean  


每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”;一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束。即每个用户最初都会得到一个初始的bean。 


2.2无状态会话bean  

bean一旦实例化就被加进会话池中,各个用户都可以共用。即使用户已经消亡,bean   的生命期也不一定结束,它可能依然存在于会话池中,供其他用户调用。由于没有特定的用户,那么也就不能保持某一用户的状态,所以叫无状态bean。但无状态会话bean
  并非没有状态,如果它有自己的属性(变量),那么这些变量就会受到所有调用它的用户的影响,这是在实际应用中必须注意的。

使用prototype后可以使并发调用在不同的实例中完成,不会产生线程安全的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: