全當知識要點記錄了,大家隨意踩踩。
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作用域
全局會話內有效