bean的作用域
spring 应用上下文 默认情况下,都是单例形式创建
spring 定义了多种作用域,可以基于这些作用域来创建bean
- 单例singleton 在整个应用中,只创建bean一个实例
- 原型prototype 每次注入或者通过Spring 上下文获取的时候,都会创建一个新的bean实例。
- 会话 在web应用中 为每个会话创建一个bean实例
- 请求 在web应用中 为每个请求创建一个bean实例
可以使用scope配置bean的 作用域
使用会话和请求作用域
假如我们把一个会话作用域的bean注入到一个单例的bean中,单例的bean会在spring应用上下文加载的时候创建,但是这个时候会话作用域的bean并不存在,并且整个系统而已,会有多个会话,多个这样子的会话作用域的bean。所以spring 并不会将实际的 会话bean注入到单例bean中,spring会注入一个会话bean的代理。当单例bean调用会话bean的方法时,代理会对其进行懒解释并将调用真正的会话bean。设置@Scope 注解的属性 proxyMode 可选值有 interface 和 target_class
网友评论