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

这里牵扯到单利模式的线程安全的设计。

我们知道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后可以使并发调用在不同的实例中完成,不会产生线程安全的问题。

 

 

 

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值