高级装配—bean的作用域
Spring定义了多种作用域,可以基于这些作用域创建bean,包括:
- 单例(Singleton):在整个应用中,只创建bean的一个实例.
- 原型(Prototype):每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean实例.
- 会话(Session):在web应用中,为每个会话创建一个bean实例.
- 请求(Request):在web应用中,为每个请求创建一个bean实例.
单例是默认的作用域,但是正如之前所描述,对于易变的类型,这并不合适.如果选择其他作用域,要使用@Scope注解,他可以和@Component或@Bean一起使用.
@Component @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class NotPad { }
@Component @Scope("prototype") public class NotPad { }
当然你也可以用XML来配置bean:
<bean id="notPad" class="com.home.demo2.NotPad" scope="prototype"/>
使用会话和请求作用域
在web的应用中经常会用到会话和请求的作用域,这里就拿购物车这个例子来说吧,每个客户都会向购物车添加商品,这时我们希望当前用户能一直使用对应的bean,这时就需要涉及到会话作用域了,如下进行配置: