- 使用Spring整合框架及銀行業務簡介(藍橋杯軟件大賽培訓教材-Java方向)
- 工業和信息化部人才交流中心藍橋杯軟件大賽專家委員會編著
- 576字
- 2018-12-27 17:48:59
1.6 bean的作用域
IOC容器通過XML配置文件定義bean,即描述如何在IOC容器中創建一個對象實例。bean是IOC容器中的對象,在配置bean時可以指定bean對象的作用域。Spring支持5種作用域(其中有3種只能用在基于Web的ApplicationContext中)。表1.2列出了這5種作用域及對應的描述,接下來會重點介紹singleton作用域和prototype作用域。
表1.2 Spring支持的5種作用域

1.6.1 singleton作用域
當把一個bean定義設置為singleton作用域時,Spring IOC容器只會創建該bean定義的唯一實例。singleton作用域是Spring中的默認作用域。
如圖1.4所示,IOC容器中只會存在一個共享的bean實例accountDao,所有對bean的請求,只要id與該bean定義相匹配,都只會返回bean的同一實例。

圖1.4 singleton作用域
1.6.2 prototype作用域
配置為prototype作用域的bean,會在每次對該bean請求(將其注入到另一個bean中,或者以程序的方式調用容器的getBean()方法)時都會創建一個新的bean實例。根據經驗,對有狀態的bean應該配置為prototype作用域,而對無狀態的bean則應該配置為singleton作用域。Prototype作用域如圖1.5所示。

圖1.5 prototype作用域
圖1.5描述了配置為prototype作用域的bean的特點。不過不要被圖例所誤導,通常情況下,DAO對象不會被配置成prototype作用域,因為DAO對象通常不會持有任何會話狀態,所以應該被配置成singleton作用域。要在XML配置文件中將bean定義成prototype作用域,可以按如下方式配置:
<bean id="…" class="…" scope="prototype"></bean>
當singleton bean依賴prototype bean時,請注意依賴是在實例化時處理的。也就是說,如果要把一個prototype bean注入到singleton bean,實際上只是實例化一個新的prototype bean注入到singleton bean,并不是每次調用singleton bean的獲取屬性方法就能獲得一個新的prototype bean的實例。
- C++ Primer習題集(第5版)
- LabVIEW入門與實戰開發100例
- MongoDB for Java Developers
- 編寫整潔的Python代碼(第2版)
- Java開發入行真功夫
- C語言程序設計案例精粹
- Clojure Reactive Programming
- Learning PHP 7
- 編程改變生活:用Python提升你的能力(進階篇·微課視頻版)
- Python數據可視化之美:專業圖表繪制指南(全彩)
- Java EE 7 with GlassFish 4 Application Server
- Modernizing Legacy Applications in PHP
- MATLAB 2020 GUI程序設計從入門到精通
- Node.js 6.x Blueprints
- Mastering Drupal 8