Подтвердить что ты не робот

Когда использовать <ref bean> и когда использовать <ref local> в Spring?

Когда использовать <ref bean="service" /> и когда использовать <ref local="service" /> в Spring?

4b9b3361

Ответ 1

Указание целевого bean с помощью атрибута bean тега ref является наиболее общей формой и позволит создать ссылку на любой bean в том же BeanFactory/ApplicationContext (независимо от того, XML файл) или родительский BeanFactory/ApplicationContext. Значение атрибута bean может быть таким же, как либо атрибут id целевого bean, либо одно из значений в атрибуте name целевого bean.

<ref bean="someBean"/>

Задание целевого bean с помощью локального атрибута использует способность анализатора XML проверять ссылки на идентификаторы XML в одном файле. Значение атрибута local должно быть таким же, как атрибут id целевого bean. Парсер XML выдаст ошибку, если в одном файле не будет найден соответствующий элемент. Таким образом, использование локального варианта - лучший выбор (чтобы узнать об ошибках как можно скорее), если целевой bean находится в одном XML файле.

<ref local="someBean"/>

Это из исходной ссылки Spring здесь

Ответ 2

Локальный атрибут элемента ref больше не поддерживается в 4.0 beans xsd, поскольку он больше не предоставляет значение по сравнению с обычной ссылкой bean. Просто измените существующие локальные ссылки ref на ref bean при обновлении до схемы 4.0.

Ответ 3

  • <ref local="someBeanId"> следует использовать, когда у вас есть дублированный идентификатор в ваших конфигурационных файлах родитель-ребенок, и вы хотите различать их в любом файле конфигурации.

  • <ref parent="someBeanId"> следует использовать в дочернем конфигурационном файле для ссылки на родительский идентификатор.

  • <ref bean="someBeanId"> следует использовать, если у вас нет дубликата id в ваших конфигурационных файлах родительского дочернего элемента.

Ответ 4

<ref local=".."> требует, чтобы ссылающийся bean находился в одном файле конфигурации.

<ref bean="..."> требует только того, чтобы он находился в том же контексте или в родительском контексте.

Разница заключается, прежде всего, в документации. Если вы видите <ref local="...">, то вы знаете, что вам нужно только посмотреть в том же файле, чтобы найти его. Кроме этого, нет большой разницы. Обычно я использовал <ref bean="..."> в большинстве случаев.

Ответ 5

В spring 4.1 локальный атрибут недействителен.

Я использовал в родительском xml атрибут name для

а в дочернем файле указан bean псевдоним, который я уже дал.