Spring IoC контейнер: зависимости и конфигурация в деталях, ссылки на другие бины (соавторы)

Элемент ref является последним элементом внутри элемента определения <constructor-arg/> или <property/>. Здесь вы устанавливаете значение указанного свойства компонента как ссылку на другой компонент (соавтор), управляемый контейнером. Указанный bean-компонент - это зависимость bean-компонента, чье свойство должно быть установлено, и он инициализируется по мере необходимости перед установкой свойства. (Если соавтор - это одноэлементный компонент, он может быть уже инициализирован контейнером.) Все ссылки в конечном счете являются ссылкой на другой объект. Объем и проверка зависят от того, указали ли вы идентификатор или имя другого объекта через атрибут bean или parent.

Указание целевого компонента с помощью атрибута компонента тега <ref/> является наиболее общей формой и позволяет создавать ссылку на любой компонент в том же контейнере или родительском контейнере независимо от того, находится ли он в одном и том же XML-файле. Значение атрибута bean-компонента может совпадать с атрибутом id целевого bean-компонента или совпадать с одним из значений в атрибуте name целевого bean-компонента. В следующем примере показано, как использовать элемент ref:

<ref bean="someBean"/>

Указание целевого компонента через parent атрибут создает ссылку на компонент, который находится в родительском контейнере текущего контейнера. Значение parent атрибута может совпадать либо с атрибутом id целевого компонента, либо с одним из значений в атрибуте имени целевого компонента. Целевой компонент должен находиться в родительском контейнере текущего. Вы должны использовать этот вариант ссылки на bean-компонент, главным образом, когда у вас есть иерархия контейнеров, и вы хотите обернуть существующий bean-компонент в родительский контейнер с прокси, имя которого совпадает с именем родительского bean-компонента. Следующая пара списков показывает, как использовать родительский атрибут:

<!-- в родительском контексте -->
<bean id="accountService" class="com.something.SimpleAccountService">
    <!-- вставьте зависимости как требуется -->
</bean>

<!-- в дочернем (потомковом) контексте -->
<bean id="accountService" <!-- имя компонента совпадает с именем родительского компонента -->
    class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="target">
        <ref parent="accountService"/> <!-- обратите внимание, как мы ссылаемся на родительский компонент -->
    </property>
    <!-- вставьте другую конфигурацию и зависимости, как требуется здесь -->
</bean>

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


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки