Spring bean 的作用域

Spring定义了多种作用域

  • 单例(Singleton):在整个应用中,只创建bean的一个实例
  • 原型(Prototype):每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean的实例
  • 会话(Session):在WEB应用中,为每个会话创建一个bean实例
  • 请求(Request):在WEB应用中,为每个请求创建一个bean实例

单例是默认的作用域。选择其他作用域要使用@Scope注解。
声明为原型bean:

@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)

OR

<bean id="beanDemo" class="..." scope="prototype">
</bean>

使用会话和请求作用域

如用户和其购物车bean,购物车bean跟用户的关联性很大,适合使用会话作用域。

@Scope(value = WebApplicationContext.SCOPE_SESSION,
 	   proxyMode = ScopedProxyMode.INTERFACES)

OR

<bean id="beanDemo" class="..." scope="session">
        <aop:scoped-proxy proxy-target-class="false" />
</bean>

scoped-proxyproxyMode功能类似,就是在还没有用户访问的时候(无法注入会话bean实例),会注入会话bean的一个代理。
ScopedProxyMode.INTERFACESproxy-target-class="false" 表明采用基于接口的代理。
请求bean会面临上面同样的装配问题。

以上内容参考自:《Spring Action》第四版

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值