Когда использовать <ref bean="service" />
и когда использовать <ref local="service" />
в Spring?
Когда использовать <ref bean> и когда использовать <ref local> в Spring?
Ответ 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 псевдоним, который я уже дал.