spring的作用域
一、概述
spring有五種作用域分別書singleton、prototype、request、session、application
二、詳解
singleton 就是單例類型。創建容器時自動創建一個bean的對象,不管是否使用,都存在了,每次獲取到的對象都是同一個對象
prototype就是一個bean定義對應多個對象實例。prototype是原型類型,在創建容器時並沒有實例化,當獲取bean的時候才回去創建對象。每次獲取到的對象都不是同一個對象。有狀態的bean使用prototype,無狀態的使用singleton。有狀態就是說這個bean實例是保存用戶的信息的,一旦用戶滅忙,bean生命周期也就結束。無狀態是沒有特定的用戶。即使使用它的用戶消亡,依然存在會話池中,依然可以被其他用戶調用。
request、session、application都是在web環境下使用的,我們一般搭配springMVC使用。因為springmvc的前端控制器包含了相關的狀態。
如果沒有使用springmvc需要在xml文件里配置一下listener和filter
request就是請求作用域:就是說每次用到這個bean來處理HTTP請求的時候會創建一個bean實例。請求完成后銷毀這個bean
session是會話作用域:session是服務器和瀏覽器的一次會話過程,是連續的不是一次請求。session結束后銷毀,session中所有http請求共享同一個請求的bean實例
application全局作用域:是說bean是ServletContext級別的就是說是整個web項目全局共享的。與單例有點像,但是單例是作用在applicationcontext也就是一個容器當中的,一個項目不僅僅只有一個applicationContext。
Spring有兩個核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。他們都可代表Spring容器,Spring容器是生成Bean實例的工廠,並且管理容器中的Bean。