Spring bean做用域

全当知识要点记录了,你们随意踩踩。web

spring的做用域有如下几种
singleton做用域
prototype做用域
request做用域
session做用域
global-session做用域

1. singleton做用域 scope="singleton" 默认值
bean设置为该做用域时,Spring IOC容器中只会存在一个共享的bean实例,也就意味着Spring IOC容器只会建立该bean定义的惟一实例。
这个单一实例会被存储到单例缓存(singleton cache)中。

2. prototype做用域 scope="prototype"
prototype做用域部署的bean,每一次请求(将其注入到另外一个bean中,或者以程序的方式调用容器的getBean())都会产生一个新的bean
实例,至关于一个new操做。
注意:Spring不能对一个prototype bean的整个生命周期负责,容器在初始化、配置、装饰或者是装配完一个prototype实例后,将它交给客户端,
随后就对 prototype实例漠不关心了。此时清楚任何prototype做用域的对象并释放其所持有的昂贵资源,都是客户端代码的职责。

注意:request做用域、session做用域、global-session做用域使用的时候首先要在初始化web的web.xml中作如下配置
<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
3. request做用域
表示该做用域下,针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP-request内有效

4. session做用域
session做用域表示针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP-session内有效

5. global-session做用域
全局会话内有效spring

相关文章
相关标签/搜索