English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Constructor注入以及示例

我们可以在Spring框架中通过构造函数注入集合值。 constructor-arg 元素内可以使用三个元素。

可以是: List Set Map

每个集合可以具有基于字符串和基于非字符串的值。 在此示例中,我们以"论坛"为例,其中 一个问题可以有多个答案。一共有三页:

Question.java applicationContext.xml Test.java

في هذا المثال، القائمة التي نستخدمها يمكن أن تكون مكررة، يمكن استخدام 集合 تتكون من عناصر فريدة. لكن عليك تحديث القائمة في ملف applicationContext.xml والقائمة في ملف Question.java.

Question.java

هذا النوع يحتوي على 3مكنيات و 2مكوّنات بناء و مетод عرض المعلومات displayInfo()، فيه نستخدم القائمة لحفظ عدة إجابات.

package com.w3codebox;
import java.util.Iterator;
import java.util.List;
public class Question {
private int id;
private String name;
private List<String> answers;
public Question() {}
public Question(int id, String name, List<String> answers) {
    super();
    this.id = id;
    this.name = name;
    this.answers = answers;
}
public void displayInfo(){
    System.out.println(id+" "+name);
    System.out.println("answers are:");
    Iterator<String> itr=answers.iterator();
    while(itr.hasNext()){
        System.out.println(itr.next());
    }
}
}

applicationContext.xml

هُناُيُستخدمُعنصرُlist مِن builder-arg لِتحديد القائمة.

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="q" class="com.w3codebox.Question">
<constructor-arg value="111"></constructor-arg>
<constructor-arg value="ما هو Java?"></constructor-arg>
<constructor-arg>
<list>
<value>Javaُهُوُلغةُبرمجة</value>
<value>Javaُهُوُمنصُت</value>
<value>Javaُهُوُجُزُورُإندونيسيا</value>
</list>
</constructor-arg>
</bean>
</beans>

Test.java

هذا الكائن يحصل على Bean من ملف applicationContext.xml ويقوم بتشغيل طريقة displayInfo.

package com.w3codebox;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class Test {
public static void main(String[] args) {
    Resource r = new ClassPathResource("applicationContext.xml");
    BeanFactory factory = new XmlBeanFactory(r);
    
    Question q = (Question) factory.getBean("q");
    q.displayInfo();
    
}
}