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

مثال على حقول التركيب (مع كائنات معتمدة)

إذا كانت هناك كائنات معتمدة في المجموعة، يمكنك استخدام list , set في ref العناصر لإدراج هذه المعلومات. أو Map

في هذا المثال، نستخدم "المنتدى" كمثال، حيث يمكن لسؤال أن يكون له عدة إجاباتلكن Answer يمتلك معلومات خاصة به، مثل answerId،answer وpostedBy. في هذا المثال تم استخدام أربع صفحات:

Question.java Answer.java applicationContext.xml Test.java

في هذا المثال، القائمة التي نستخدمها يمكن أن تحتوي على عناصر مكررة، يمكنك استخدام set يحتوي على عناصر فريدة فقط. ولكن يجب عليك تغيير القائمة المحددة في ملف applicationContext.xml والقائمة المحددة في ملف Question.java.

Question.java

بهذا الفئة تحتوي على ثلاث خصائص، إثنين من وظائف البناء ووظيفة عرض المعلومات displayInfo(). هنا، نستخدم القائمة لتشمل عدة إجابات.

package com.w3codebox;
import java.util.Iterator;
import java.util.List;
public class Question {
private int id;
private String name;
private List<Answer> answers;
public Question() {}
public Question(int id, String name, List<Answer> 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<Answer> itr=answers.iterator();
    while(itr.hasNext()){
        System.out.println(itr.next());
    {}
{}
{}

Answer.java

بهذا الفئة تملك ثلاث خصائص id،name وby ووظيفة البناء والوظيفة toString().

package com.w3codebox;
public class Answer {
private int id;
private String name;
private String by;
public Answer() {}
public Answer(int id, String name, String by) {
    super();
    this.id = id;
    this.name = name;
    this.by = by;
{}
public String toString(){
    return id+" "+name+" "+by;
{}
{}

applicationContext.xml

ref الإليمنت ref يستخدم لتحديد إشارة إلى بيانات أخرى. هنا، نستخدم ref الإлемент bean باستخدام الخاصية لتحديد إشارة إلى بيانات أخرى.

<?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="ans1" class="com.w3codebox.Answer">
<constructor-arg value="1"></constructor-arg>
<constructor-arg value="Java هو لغة برمجة"></constructor-arg>
<constructor-arg value="John"></constructor-arg>
</bean>
<bean id="ans2" class="com.w3codebox.Answer">
<constructor-arg value="2"></constructor-arg>
<constructor-arg value="Java هو منصة"></constructor-arg>
<constructor-arg value="Ravi"></constructor-arg>
</bean>
<bean id="q" class="com.w3codebox.Question">
<constructor-arg value="111"></constructor-arg>
<constructor-arg value="ما هو java?"></constructor-arg>
<constructor-arg>
<list>
<ref bean="ans1"/>
<ref bean="ans2"/>
</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();
    
{}
{}