Spring ListFactoryBean實例

ListFactoryBean」類爲開發者提供了一種在Spring的bean配置文件中創建一個具體的列表集合類(ArrayList和LinkedList)。

這裏有一個 ListFactoryBean 示例,在運行時它將實例化一個ArrayList,並注入到一個 bean 屬性。

package com.yiibai.common;

import java.util.List;

public class Customer
{
private List lists;
//...
}

Spring bean配置文件 - applicationContext.html 文件的內容。

<bean id="CustomerBean" class="com.yiibai.common.Customer">
    <property name="lists">
        <bean class="org.springframework.beans.factory.config.ListFactoryBean">
            <property name="targetListClass">
                <value>java.util.ArrayList</value>
            </property>
            <property name="sourceList">
                <list>
                    <value>one</value>
                    <value>2</value>
                    <value>three</value>
                </list>
            </property>
        </bean>
    </property>
</bean>

另外,還可以使用 util 模式和util:list 來達到同樣的目的。

<bean id="CustomerBean" class="com.yiibai.common.Customer">
    <property name="lists">
        <util:list list-class="java.util.ArrayList">
            <value>one</value>
            <value>2</value>
            <value>three</value>
        </util:list>
    </property>
</bean>

請記住要包函 util 模式,否則會出現下面的錯誤

Caused by: org.xml.sax.SAXParseException:
The prefix "util" for element "util:list" is not bound.

執行,查看結果:

package com.yiibai.common;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");

    Customer cust = (Customer) context.getBean("CustomerBean");
    System.out.println(cust);

}

}

輸出結果

Customer [lists=[one, 2, three]] Type=[class java.util.ArrayList]

在運行時實例化ArrayList並注入列表到客戶的屬性。

下載代碼 – http://pan.baidu.com/s/1i4aK26h