全當知識要點記錄了,你們隨意踩踩。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