Init Пользовательский внутренний объект с использованием Spring Bean XML - PullRequest
1 голос
/ 16 мая 2019

У меня есть такой класс:

Class Food
  int type
  String name

Class Dog
   String dogName
   Food food

Я хочу инициализировать класс Dog с помощью свойств Spring, у меня нет проблем с инициализацией значения dogName, выполнив это:

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

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

...

</bean>

Как установить значение для Food объекта?

Ответы [ 3 ]

2 голосов
/ 16 мая 2019

Используйте ссылку для ссылки на идентификатор бина пищи.

    <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 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 голос
/ 16 мая 2019
<property name="food">
    <bean class="...Food">
      <property name="type" value="1"/>
      <property name="name" value="Apple"/>          
    </bean>
  </property>

См. Пружину 3.3.2.3. Внутренняя фасоль :

Элемент внутри элементов or используется для определения так называемого внутреннего компонента. Для определения внутреннего бина не нужно определять какой-либо идентификатор или имя, и лучше даже не указывать какое-либо значение идентификатора или имени, потому что контейнер просто игнорирует значение идентификатора или имени.

<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>
0 голосов
/ 16 мая 2019

Используйте ref в <property> для обозначения идентификатора продукта.

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

</bean>

<bean id="dog" class="....Dog"> 
    <property name="dogName" value="dog"/> 
    <property name="food" ref="food"/> 
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...