以下內容引用自http://wiki.jikexueyuan.com/project/spring/bean-definition.html:
Bean定義
被稱作bean的對象是構成應用程序的支柱也是由Spring IoC容器管理的。bean是一個被實例化,組裝,並通過Spring IoC容器所管理的對象。這些bean是由用容器提供的配置元數據創建的。
bean定義包含稱為配置元數據的信息,下述容器也需要知道配置元數據:
-
如何創建一個bean
-
bean的生命周期的詳細信息
- bean的依賴關系
上述所有的配置元數據轉換成一組構成每個bean定義的下列屬性。
屬性 | 描述 |
---|---|
class | 這個屬性是強制性的,並且指定用來創建bean的bean類。 |
name | 這個屬性指定唯一的bean標識符。在基於XML的配置元數據中,你可以使用ID和/或name屬性來指定bean標識符。 |
scope | 這個屬性指定由特定的bean定義創建的對象的作用域。 |
constructor-arg | 它是用來注入依賴關系的。 |
properties | 它是用來注入依賴關系的。 |
autowiring mode | 它是用來注入依賴關系的。 |
lazy-initialization mode | 延遲初始化的bean告訴IoC容器在它第一次被請求時,而不是在啟動時去創建一個bean實例。 |
initialization method | 在bean的所有必需的屬性被容器設置之后,調用回調方法。 |
destruction method | 當包含該bean的容器被銷毀時,使用回調方法。 |
Spring配置元數據
Spring IoC容器完全由實際編寫的配置元數據的格式解耦。有下面三個重要的方法把配置元數據提供給Spring容器:
-
基於XML的配置文件
-
基於注解的配置
- 基於Java的配置
以下為一個基於XML配置文件的例子,這個配置文件中有不同的bean定義,包括延遲初始化,初始化方法和銷毀方法的:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 一個簡單的bean定義 --> <bean id = "..." class = "..."> <!-- 在這里配置這個bean的協作者 --> </bean> <!-- 一個具有延遲初始化設置的bean定義 --> <bean id = "..." class = "..." lazy-init = "true"> <!-- 在這里配置這個bean的協作者 --> </bean> <!-- 一個具有初始化方法的bean定義 --> <bean id = "..." class = "..." init-method = "..."> <!-- 在這里配置這個bean的協作者 --> </bean> <!-- 一個具有銷毀方法的bean定義 --> <bean id = "..." class = "..." destroy-method = "..."> <!-- 在這里配置這個bean的協作者 --> </bean> <!-- 在這里定義更多的bean --> </beans>