Боб Spring без идентификатора или имени

26
задан ROMANIA_engineer 3 April 2015 в 14:41
поделиться

6 ответов

Некоторые бобы не требуются, чтобы быть полученными доступ другими бобами в файле контекста или программно. Таким образом, как упомянуто JacobM, они не требуют идентификатора или называют, поскольку на них не ссылаются.

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

определение в качестве примера было бы

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location" value="myapp.properties" />
</bean>

, JavaDoc предоставляет дальнейшую документацию относительно этого объекта, но далее относительно в файле можно сослаться на свойства из файла, просто используя стандартный шаблонный $ заполнителя замены {...}.

23
ответ дан Spencer Kormos 28 November 2019 в 07:16
поделиться

Одна возможность состоит в том, что можно определить боб на месте, и таким образом, Вам не нужен идентификатор, так как Вы ниоткуда еще не должны обращаться к нему. Скажите, что я сделал, чтобы Foo возразил, что берет свойство Bar:

<bean id="foo" class="Foo">
     <property name="bar">
         <bean class="Bar">
     </property>
</bean>

бобу Панели не нужно имя, потому что он только используется для установки того одного свойства.

8
ответ дан Jacob Mattison 28 November 2019 в 07:16
поделиться

Проверьте возможность автопроводного соединения. Другой боб мог сослаться на боб без имени при наличии автопроводного набора свойств к byType.

Это - просто предположение. Без конкретного примера я не могу больше говорить.

6
ответ дан kgiannakakis 28 November 2019 в 07:16
поделиться

Идентификатор и атрибуты имени являются дополнительными и используются для ссылки на бобовое определение из других определений. Посмотрите официальная документация Spring для большего количества детали.

3
ответ дан digitalsanctum 28 November 2019 в 07:16
поделиться

На бобы без идентификатора или имени может все еще сослаться имя класса. Spring называет те бобы автоматически с помощью имени класса и если существует больше чем один боб того же класса, это добавляет число им. Анонимные бобы обычно определяются в теге свойства, но если они просто там, возможно, там автосоединяет проводом настроенный в некоторых других бобах. Так или иначе я думаю, добавляя имя, или идентификатор к тем бобам не повредит Ваше приложение.

1
ответ дан Chochos 28 November 2019 в 07:16
поделиться

Как несколько человек упомянули выше, не, весь захват боба основан на имени/ИДЕНТИФИКАТОРЕ; часть его основана на типе. Например, существует метод

BeanFactoryUtils.beansOfTypeIncludingAncestors (...)

, который захватывает все бобы некоторого данного типа. Это используется, например, сетью MVC DispatcherServlet Spring (среди многих других мест) для обнаружения бобов типом, таких как HandlerMappings, HandlerAdapters, HandlerExceptionResolvers и т.д. Контрастируйте это со случаями, где боб должен иметь определенное известное имя/ИДЕНТИФИКАТОР, которое будет найдено, такие как LocaleResolver (идентификатор должен быть "localeResolver", или это не будет найдено), и ThemeResolver (идентификатор должен быть "themeResolver", или это не будет найдено).

1
ответ дан Willie Wheeler 28 November 2019 в 07:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: