Является ли родительский атрибут тега bean эквивалентным наследованию на Java?

Я начал изучать документацию Spring. Я столкнулся с объяснением атрибута parent, использует ли атрибут parent между двумя beans эквивалент отношения наследования между этими классами?

Если да, то как выполнять переопределение метода? Также я видел в каком-то контексте использование атрибута parent в файле конфигурации XML и ключевое слово extends в классе bean. Требуется ли указывать обе пружины для реализации наследования?

Ответ 1

  • В spring конфигурация parent в bean означает configuration inheritance и не связана с наследованием Java.
  • configuration inheritance сохраняет много кода, поскольку вы устраняете повторяющийся код XML.

Например, у вас есть bean с атрибутами

Class MyBean {
    attrib1
    attrib2
    attrib3
    attrib4
} 

Скажем, что один экземпляр bean say bean1 просто нуждается в attrib1 и attrib2, тогда как другой говорит, что для экземпляра bean2 нужны все четыре атрибута.

Позволяет настроить эти два beans

<bean id="bean1" class="MyBean">
    <property name="attrib1" value="val1" />
    <property name="attrib2" value="val2" />
</bean>

<bean id="bean2" parent="bean1">
    <property name="attrib3" value="val3" />
    <property name="attrib4" value="val4" />
</bean>

Обратите внимание, что bean2 просто необходимо настроить attrib3 и attrib4. Два других атрибута унаследованы из bean1

Чтобы ответить на ваш вопрос:

Требуется ли указывать обе пружины для реализации наследование?

Нет. Как упоминалось ранее, это не то же самое, что наследование Java.

Ответ 2

Нет... Они не связаны друг с другом.

Определение родителя bean можно рассматривать как форму шаблона для других beans (которые не должны иметь никаких отношений). Представьте, что у вас есть 3 beans, которые все используют/нуждаются в конфигурации имени пользователя/пароля/URL-адреса, тогда вы можете создать родительский bean, который определяет все эти свойства. Это уменьшает ваши усилия по настройке (вам не нужно дублировать свойства во всех определениях bean).

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-child-bean-definitions дает хороший обзор.