spring 中的 scope 詳解
1. scope概論
spring中scope是一個非常關鍵的概念,簡單說就是物件在spring容器(IOC容器)中的生命週期,也可以理解為物件在spring容器中的建立方式。
2. scope歷史及分類
目前,scope的取值有5種取值:
在Spring 2.0之前,有singleton和prototype兩種;
在Spring 2.0之後,為支援web應用的ApplicationContext,增強另外三種:request,session和global session型別,它們只實用於web程式,通常是和XmlWebApplicationContext共同使用。
3.單個scope詳解
1)singleton (單一例項)
此取值時表明容器中建立時只存在一個例項,所有引用此bean都是單一例項。如同每個國家都有一個總統,國家的所有人共用此總統,而這個國家就是一個spring容器,總統就是spring建立的類的bean,國家中的人就是其它呼叫者,總統是一個表明其在spring中的scope為singleton,也就是單例模型。
此外,singleton型別的bean定義從容器啟動到第一次被請求而例項化開始,只要容器不銷燬或退出,該型別的bean的單一例項就會一直存活,典型單例模式,如同servlet在web容器中的生命週期。
2)prototype
spring容器在進行輸出prototype的bean
如同分蘋果,將蘋果的bean的scope屬性宣告為prototype,在每個人領取蘋果的時候,我們都是發一個新的蘋果給他,發完之後,別人愛怎麼吃就怎麼吃,愛什麼時候吃什麼時候吃,但是注意吃完要把蘋果核扔到垃圾箱!對於那些不能共享使用的物件型別,應該將其定義的scope設為prototype。
3)request
再次說明request,session和global session型別只實用於web程式,通常是和XmlWebApplicationContext共同使用。<bean id ="requestPrecessor" class="...RequestPrecessor" scope="request" />
Spring容器,即XmlWebApplicationContext 會為每個HTTP請求建立一個全新的RequestPrecessor物件,當請求結束後,該物件的生命週期即告結束,如同java web中request的生命週期。當同時有100個HTTP請求進來的時候,容器會分別針對這10個請求建立10個全新的RequestPrecessor例項,且他們相互之間互不干擾,簡單來講,request可以看做prototype的一種特例,除了場景更加具體之外,語意上差不多。
4)session
對於web應用來說,放到session中最普遍的就是使用者的登入資訊,對於這種放到session中的資訊,我們可以使用如下形式的制定scope為session:
<bean id ="userPreferences" class="...UserPreferences" scope="session" />
Spring容器會為每個獨立的session建立屬於自己的全新的UserPreferences例項,比request scope的bean會存活更長的時間,其他的方面沒區別,如果java web中session的生命週期。
5)global session
<bean id ="userPreferences" class="...UserPreferences" scope="globalsession" />
global session只有應用在基於porlet的web應用程式中才有意義,它對映到porlet的global範圍的session,如果普通的servlet的web 應用中使用了這個scope,容器會把它作為普通的session的scope對待。
4.scope配置
1)xml方式
進行bean的配置時,指定scope。2)註解方式
前提為配置spring為註解配置。
相關推薦
Maven 依賴中 scope 詳解
Maven 的哲學思想是,約定優於配置(Convention Over Configuration),Maven 依賴中 scope 的預設值是compile Scope 指定了依賴(第三方jar包)的 作用範圍 作用範圍包括,所在專案的測試、編譯、執行、打包等生命週期 其中
Spring中Model詳解
1.場景分析 在許多實際專案需求中,後臺要從控制層直接返回前端所需的資料,這時Model大家族就派上用場了。 2.三者區別 ①Model Model是一個介面,它的實現類為ExtendedMo
Spring註解 @Scope 詳解
0.思維導圖 1. scope概論 spring中scope是一個非常關鍵的概念,簡單說就是物件在spring容器(IOC容器)中的生命週期,也可以理解為物件在spring容器中的建立方式。 2. scope歷史及分類 目前,scope的取值有5種取值:
spring中的scope詳解
0.思維導圖 1. scope概論 spring中scope是一個非常關鍵的概念,簡單說就是物件在spring容器(IOC容器)中的生命週期,也可以理解為物件在spring容器中的建立方式。
Spring中bean的scope詳解
如何使用spring的作用域: <bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/> 這裡的scope就是用來配置spring bean的作用域,它標識bean的作
spring 中的 scope 詳解
1. scope概論 spring中scope是一個非常關鍵的概念,簡單說就是物件在spring容器(IOC容器)中的生命週期,也可以理解為物件在spring容器中的建立方式。 2. scop
Spring中註解@Scope詳解
Scope是spring中的一個註解,可以作為類註解,也可以作為方法註解,它有五個作用域,分別是singleton、prototype、request、session、global session,spring中的bean預設是使用singleton,即單例模式
【轉載】Maven依賴中的scope詳解
lan 無需 而已 ref targe 周期 包含 配置 com Maven的一個哲學是慣例優於配置(Convention Over Configuration), Maven默認的依賴配置項中,scope的默認值是compile,項目中經常傻傻的分不清,直接默認了。今天梳
Spring Boot 2.0 Intellij Idea 中圖文詳解打包成可執行Jar
off aps cycle 找到 sna 打包 AS main 切換 我們使用Spring Boot 2.0 創建好我們的項目後,我們一般需要打包,然後部署到服務器上。 打包步驟: 1. 選中項目,右鍵——> Open Module Settings. 2. 切換
Spring mvc中DispatcherServlet詳解
簡介 DispatcherServlet是前端控制器設計模式的實現,提供SpringWebMVC的集中訪問點,而且負責職責的分派,而且與spring IOC容器無縫整合,從而可以獲得Spring的優勢。 職責和作用 其主要職責是排程工作,本身用於控制流程,具體為: 1.檔案上傳解析,如果請求型別是mu
Maven依賴中的scope詳解(轉載)
ont 默認值 動作 周期 vid st表 傻傻 足夠 只需要 Maven的一個哲學是慣例優於配置(Convention Over Configuration), Maven默認的依賴配置項中,scope的默認值是compile,項目中經常傻傻的分不清,直接默認了。今天梳理
Maven依賴中的scope詳解,在eclipse裡面用maven install可以程式設計成功,到伺服器上用命令執行報VM crash錯誤
Maven依賴中的scope詳解 專案中用了<scope>test</scope>在eclipse裡面用maven install可以編譯成功,到伺服器上用命令執行報VM crash錯誤,原因是test程式碼提交上去了,但沒有對應的junit包導致的 解決辦法:1.伺服器上編譯的時
Maven依賴中的scope詳解
Maven的一個哲學是慣例優於配置(Convention Over Configuration), Maven預設的依賴配置項中,scope的預設值是compile,專案中經常傻傻的分不清,直接默認了。今天梳理一下maven的scope。 scope的分類 com
spring配置檔案中autowire詳解
這個屬性對應的值有以下幾種 常用的是byName和byType,我來具體說說這兩種值的區別與作用。 例項(DAO、Implements、Service三者之間的關係) public class UserDAOImpl implements UserDAO{ pr
spring 各個jar詳解以及在maven中的配置
spring.jar 是包含有完整發布模組的單個jar 包。但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2.jar。spring-src.zip就是所有的原始碼壓縮包。除了spring.jar 檔案,Spring 還
Spring基本功能詳解
tex factor oid out 負責 sch bsp 初始化 pub 一、SpringIOC Spring的控制反轉:把對象的創建,初始化,銷毀的過程交給SpringIOC容器來做,由Spring容器控制對象的生命周期。 1.1 啟動Spring容器的方式:
JS中JSON詳解
名稱 完全 rip json詳解 core 兼容 json字符串 之間 org JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,采用完全獨立於語言的文本格式,是理想的數據交換格式。同時,JSON是 JavaScript 原生格式
nodeJs中npm詳解
commonjs -s license mon sem console 能力 效應 模塊安裝 npm 是 Node.js 的模塊依賴管理工具。作為開發者使用的工具,主要解決開發 node.js 時會遇到的問題。如同 RubyGems 對於 Ruby 開發者和 Maven 對
AngularJs指令配置參數scope詳解
便在 指令 getname 可選 獨立 con func tex 掌握 AngularJs最重要也是最難理解的模塊之一就是它的指令(directive)了,自定義指令配置有很多個參數,下面我只說說其中scope的配置極其含義。 scope表示指令的作用域,它有三個可選值:t
006_netstat中state詳解
51cto time list osi lose 手動 請求 等待 沒有 TCP三次握手的過程如下: 主動連接端發送一個SYN包給被動連接端; 被動連接端收到SYN包後,發送一個帶ACK和SYN標誌的包給主動連接端; 主動連接