0

私はこのサイトで多くの春を検索しました..しかし、私はこれに本当に慣れていません..だからここに私の質問があります:

私は3つの主要なクラスを持っています。

 public class User
 {
    private String name;
    private ArrayList<Car> cars;

    public ArrayList<Car> getCars() 
    {
       return cars;
    }

    public void setCars(ArrayList<Car> cars) 
    {
       this.cars= cars;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
       this.name = name;
    }
 }

 public class Car
 {
    private String type;
    private ArrayList<Wheel> wheels;

    public ArrayList<Wheel> getWheels() 
    {
       return wheels;
    }

    public void setWheels(ArrayList<Wheel> wheels) 
    {
       this.wheels= wheels;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
       this.type= type;
    }
 }

 public class Wheel
 {
    private String name;        

    public String getName() {
        return name;
    }

    public void setType(String name) {
       this.name= name;
    }
 }

それが Java コードです。これは単なる例です。だから私は3つのクラスを持っています.1つは1つまたは複数の車を持つことができるユーザーであり、1つまたは複数の車輪を持つことができる車です.

私のSpring.xmlで、私はこのようなことをしたい..

 <?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:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <bean id="car1" class="Car">
        <property name="type" value="motorcycle"/>
    </bean>

    <bean id="wheel1" class="Wheel">
        <property name="name" value="one"/>
    </bean>
    <bean id="wheel2" class="Wheel">
        <property name="name" value="two"/>
    </bean>

    <bean id="user1" class="User">
        <property name="name" value="Me"/>
        <property name="cars">
            <list value-type="Car">
                <ref bean="car1">
                  <property name="wheels">
                     <ref bean="wheel1">
                     <ref bean="wheel2">
                  </property">
                </ref>
            </list> 
        </property>
    </bean>

もしあなたがこの春を見たら..私は春のコードでユーザーインスタンスと車と車輪を作成したい..しかし、それは私にそれをさせません..私はプロパティの子を持つref Beanを作成できないからです。 . だから私は私の ref Bean 車に車輪を追加することができません.. どうすればこれを行うことができますか? または、これはこの方法では実行できません。おそらく、これに対する別の解決策です..ダンノ..よろしくお願いします..

私の悪い英語でごめんなさい。

4

2 に答える 2

3

Bean ref にプロパティを設定することはできませんが、同じ車のインスタンスを別のユーザーに異なる数の車輪で再利用できるようにしたい場合は、代わりに Spring の Bean 定義の継承を使用して車の Bean のコピーを作成できます。

次の XML では、抽象的な車の定義を作成し、それを継承してユーザー定義に wheel プロパティを設定します。

<!-- note that original car bean is now marked abstract -->
<bean id="carPrototype" class="Car" abstract="true">
    <property name="type" value="motorcycle"/>
</bean>

<bean id="wheel1" class="Wheel">
    <property name="name" value="one"/>
</bean>
<bean id="wheel2" class="Wheel">
    <property name="name" value="two"/>
</bean>

<bean id="user1" class="User">
    <property name="name" value="Me"/>
    <property name="cars">
        <list value-type="Car">
            <!-- note the use of 'parent' attribute -->
            <bean parent="carPrototype">
                <!-- the type property of "motorcycle" is inherited from the carPrototype definition -->
                <property name="wheels">
                    <ref bean="wheel1">
                    <ref bean="wheel2">
                </property">
            </bean>
        </list> 
    </property>
</bean>

<bean id="user2" class="User">
    <property name="name" value="You"/>
    <property name="cars">
        <list value-type="Car">
            <bean parent="carPrototype">
                <!-- the type property of "motorcycle" is inherited from the carPrototype definition -->
                <property name="wheels">
                    <ref bean="wheel1">
                </property">
            </bean>
        </list> 
    </property>
</bean>

ただし、<bean>上記のようにネストされたもの (たとえば、car Bean 定義がユーザー Bean 定義内にネストされている) は内部Bean と呼ばれ、 idまたはnameを持つことはできないことに注意してください。また、他の場所から参照することもできません。各車に Bean ID を持たせたい場合は、それらをすべてトップレベル Bean にする必要があります。

<bean id="carPrototype" class="Car" abstract="true">
    <property name="type" value="motorcycle"/>
</bean>

<bean id="car1" parent="carPrototype">
    <!-- the type property of "motorcycle" is inherited from the carPrototype definition -->
    <property name="wheels">
        <ref bean="wheel1">
        <ref bean="wheel2">
    </property">
</bean>

<bean id="car2" parent="carPrototype">
    <!-- the type property of "motorcycle" is inherited from the carPrototype definition -->
    <property name="wheels">
        <ref bean="wheel1">
    </property">
</bean>

<bean id="wheel1" class="Wheel">
    <property name="name" value="one"/>
</bean>
<bean id="wheel2" class="Wheel">
    <property name="name" value="two"/>
</bean>

<bean id="user1" class="User">
    <property name="name" value="Me"/>
    <property name="cars">
        <list value-type="Car">
            <ref bean="car1"/>
        </list> 
    </property>
</bean>

<bean id="user2" class="User">
    <property name="name" value="You"/>
    <property name="cars">
        <list value-type="Car">
            <ref bean="car2"/>
        </list> 
    </property>
</bean>
于 2012-10-23T15:37:32.837 に答える
1

次の場所で Car Bean を作成しています。

<bean id="car1" class="Car">
    <property name="type" value="motorcycle"/>
</bean>

あなたの目的のために、ここで必要な Wheel オブジェクトを定義し、後でこのオブジェクトへの参照を配置する必要があると思います。

<bean id="car1" class="Car">
    <property name="type" value="motorcycle"/>
    <property name="wheels">
        <list>
            <ref bean="wheel1">
            <ref bean="wheel2">
        </list>
    </property">
</bean>

<bean id="wheel1" class="Wheel">
    <property name="name" value="one"/>
</bean>
<bean id="wheel2" class="Wheel">
    <property name="name" value="two"/>
</bean>

<bean id="user1" class="User">
    <property name="name" value="Me"/>
    <property name="cars" ref="car1"/>
</bean>
于 2012-10-23T15:20:30.393 に答える