使用Spring bean xml初始化自定义内部对象

时间:2019-05-16 09:20:22

标签: java spring spring-bean

我有这样的课程:

Class Food
  int type
  String name

Class Dog
   String dogName
   Food food

我想使用Spring属性初始化Dog类,这样做没有问题,可以初始化dogName值:

<bean id="dog" class="....Dog"> 

 <property name="dogName" value="dog"/> 

...

</bean>

如何为Food对象设置值?

3 个答案:

答案 0 :(得分:2)

使用ref in来引用食物的bean id。

    <bean id="food" class="....Food"></bean>

    <bean id="dog" class="....Dog"> 
        <property name="dogName" value="dog"/> 
        <property name="food" ref="food"/> 
    </bean>

     <bean id="dog" class="c...dog">
        <property name="dogName" value="dog"/> 
        <property name="food" >
            <bean  class="...food">
               <property name="type" value="1"/> 
               <property name="name" value="chicken"/> 
            </bean>
        </property>
     </bean>

,如果是内部的,则不能在父bean标记之外使用它

 <bean id="dog" class="c...dog">
    <property name="dogName" value="dog"/> 
    <property name="food" >
        <bean  class="...food">
           <property name="type" value="1"/> 
           <property name="name" value="chicken"/> 
      </bean>
    </property>
</bean>

答案 1 :(得分:1)

<property name="food">
    <bean class="...Food">
      <property name="type" value="1"/>
      <property name="name" value="Apple"/>          
    </bean>
  </property>

请参见春季3.3.2.3. Inner beans

  

或元素内的元素用于定义所谓的内部bean。内部bean定义不需要定义任何id或名称,最好甚至不要指定任何id或名称值,因为id或名称值只会被容器忽略。

<bean id="outer" class="...">
  <!-- instead of using a reference to a target bean, simply define the target bean inline -->
  <property name="target">
    <bean class="com.example.Person"> <!-- this is the inner bean -->
      <property name="name" value="Fiona Apple"/>
      <property name="age" value="25"/>
    </bean>
  </property>
</bean>

答案 2 :(得分:0)

使用ref中的<property>来引用食物的bean ID。

<bean id="food" class="....Food"> 

</bean>

<bean id="dog" class="....Dog"> 
    <property name="dogName" value="dog"/> 
    <property name="food" ref="food"/> 
</bean>
相关问题