2016-09-30 5 views
1

Случай 1: Предположим, что мы вставляем singleton bean внутри прототипа bean, тогда сколько экземпляров будет создано, если мы будем называть прототип bean.Spring bean scope: singleton and Prototype

Рассмотрим сценарий: -

<bean id="a" class="A" scope="prototype"> 
<property name="b" ref="b"> 
</bean> 

<bean id="b" class="B"> 

Случай 2: Предположим, что мы инъекционного Prototype боб внутри одноплодной фасоли, то сколько экземпляров будет создан, если мы называем одноплодной боб.

Рассмотрим сценарий: -

<bean id="a" class="A" > 
    <property name="b" ref="b"> 
</bean> 

<bean id="b" class="B" scope="prototype"> 

ответ

0

Одноэлементный боб всегда будет ссылаться на тот же объект. Прототип будет иметь столько же экземпляров, сколько раз, на которые ссылается bean. Предоставленные вами варианты использования не меняют эту парадигму.

1

Я отвечаю на часть вашего вопроса.

Вариант 2: Singleton фасоль с зависимостями прототипов фасоли

При такой конфигурации, то ожидается, что когда-либо вы запрашиваете А из контекста приложения, он будет подключен с новым B, как мы объявили о B бобе имеет прототип. Но этого не произойдет.

Когда контекст приложения получает , инициализируется, он видит, что A является одноэлементным компонентом и инициализирует его в контексте после его подключения со всеми установленными зависимостями. Итак, начиная с и далее, когда мы запрашиваем контекст для A, он возвращает один и тот же бит каждый раз, поэтому вы также получите тот же B каждый раз.

Вы можете решить/преодолеть с помощью Метод поиска впрыска. См. Это article.

Смежные вопросы