- Spring 2.5之前的Bean 的作用域只有兩種
- Springleton:單例Bean
- Prototype : 原型Bean
- Spring 2.5 之后Bean的作用域有一下五種
-
作用域 描述 singleton (單例) 使用該屬性定義Bean時,IOC容器僅創建一個Bean實例,IOC容器每次返回的是同一個Bean實例。在整個spring ioc 容器中只能創建一個Bean實例 prototype (原型) 使用該屬性定義Bean時,IOC容器可以創建多個Bean實例,每次返回的都是一個新的實例。 每次調用都會創建一個bean request (請求) 該屬性僅對HTTP請求產生作用,使用該屬性定義Bean時,每次HTTP請求都會創建一個新的Bean,適用於WebApplicationContext環境。 session (會話) 該屬性僅用於HTTP Session,同一個Session共享一個Bean實例。不同Session使用不同的實例。 global-session (全局) 該屬性僅用於HTTP Session,同session作用域不同的是,所有的Session共享一個Bean實例。
-
- 如何使用
- 通過bean 標簽的scope 屬性來定義bean的作用
- Bean的生命周期
- 指定Bean的初始化方法 和銷毀方法 (bean容器的生命周期是由Spring 容器來管理的 也可以自己手動管理)
- 可以Spring中指定Bean的初始化方法 ,當JavaBean實例化完成后調用該方法對javaBean做初始化操作 ( init-method="init")
- 同時也可以在Spring中指定Bean的銷毀方法 ,Spring銷毀該javaBBan實例之前進行一些銷毀前的資源釋放操作(destroy-method="close")


- 指定Bean的初始化方法 和銷毀方法 (bean容器的生命周期是由Spring 容器來管理的 也可以自己手動管理)
- bean 的自動裝載
- 普通屬性的自動裝配
- 集合的自動裝配
- 普通屬性的自動裝配
- bean 延時實例化
- ApplicationContext 實現的默認行為就是在啟動時講所有單例 bean 提前進行實例化
- 提前實例化意味着作為Bean 的實例化工作作為容器初始過程的一部分,ApplicationContext容器會創建並配置所有的單例Bean
- 通常情況下這是件好事 ,因為這樣在配置中任何錯誤就會即刻被發現 (否則的話可能花幾個小時甚至幾天)
- 如果開發者不想讓一個單例Bean在AppcationContxt 初始化時被提前實例化 那么可以講Bean設置為延遲實例化
- ki

