鍍金池/ 教程/ Java/ 配置 Bean 的屬性值和 Bean 對象的組裝
控制反轉(zhuǎn)(IoC)/依賴注入(DI)
工廠模式
Bean 的銷毀
Bean 的定義
IoC 容器
Bean 之前初始化
設(shè)計用戶持久化類
工廠模式改進(jìn)
配置 Bean 的屬性值和 Bean 對象的組裝
BeanFactory 管理 Bean(組件)的生命周期
BeanFactory
幾種依賴注入模式的對比總結(jié)
依賴注入的三種實現(xiàn)形式
復(fù)雜的屬性值

配置 Bean 的屬性值和 Bean 對象的組裝

我們可以在 Spring 的配置文件中直接設(shè)置 Bean 的屬性值。例如:你的 Bean 有一個“maxSize”屬性,它表示每頁顯示數(shù)據(jù)的最大值,它有一個 set 方法。代碼如下:

private int maxSize;

public void setMaxSize(int maxSize) {

this.maxSize = maxSize;

}

這樣,你可以在Bean定義時設(shè)置這個屬性的值:

<property name="maxSize"><value>20</value></property>

前面介紹了 Bean 原始類型的屬性設(shè)置。這種方式已經(jīng)可以非常有效而便利的參數(shù)化應(yīng)用對象。然而,Bean 工廠的真正威力在于:它可以根據(jù) bean 屬性中描述的對象依賴來組裝(wire)bean 實例。例如:userDao 對象的一個屬性“sessionFactory”引用了另外一個 Bean 對象,即 userDao對象實例依賴于sessionFactory對象:

? ? <bean id="userDao" class="com.dev.spring.simple.HibernateUserDao">

    <property name="sessionFactory"><ref local="sessionFactory"/></property>

    </bean>

    <bean id="sessionFactory"

     class="org.springframework.orm.hibernate.LocalSessionFactoryBean">

     </bean>

在這個簡單的例子中,使用元素引用了一個 sessionFactory 實例。在 ref 標(biāo)簽中,我們使用了一個“l(fā)ocal”屬性指定它所引用的Bean對象。除了 local 屬性之外,還有一些其它的屬性可以用來指定引用對象。下面列出元素的所有可用的指定方式:

bean:可以在當(dāng)前文件中查找依賴對象,也可以在應(yīng)用上下文(ApplicationContext)中查找其它配置文件的對象。

local:只在當(dāng)前文件中查找依賴對象。這個屬性是一個 XML IDREF,所以它指定的對象必須存在,否則它的驗證檢查會報錯。

external:在其它文件中查找依賴對象,而不在當(dāng)前文件中查找。

總的來說,大部分的時候可以通用?!癰ean”是最靈活的方式,它允許你在多個文件之間共享 Bean。而“l(fā)ocal”則提供了便利的XML驗證。