прототипичный часть контекста приложения:Spring IoC: зависит-на переопределениях отложенной INIT
<bean id="option_A" class="class_a" lazy-init="true"/>
<bean id="option_B" class="class_b" lazy-init="true" depends-on="setup_bean"/>
<alias name="option_${OPTION_PROPERTY}" alias="thingChosen"/>
<bean id="setup_bean" class="class_setup" lazy-init="true"/>
Концепция здесь является то, что если OPTION_PROPERTY установлен в положение "A", а затем
<bean id="foo" class="whatever"><property name="bar" ref="thingChosen"/></bean>
получит экземпляр класса_a, введенный в свойство bar, и если для свойства установлено значение «B», тогда он получит экземпляр класса b, введенный, но класс b имеет скрытую зависимость от setup_bean (какой класс отсутствует), поэтому setup_bean должен быть создан первым.
Что происходит, если для параметра OPTION_PROPERTY установлено значение «A», то setup_bean все еще создается. Я пробовал это, используя Spring 3.2.4.RELEASE, и это согласовано. Это похоже на ошибку или недоразумение с моей стороны.
Если фаза lazy-init, то не должна зависеть от фасоли ждать, пока этот бобы лениво не создаются до того, как будут созданы сами?
Это довольно полное доказательство. Я вернусь к своему коду и посмотрю, смогу ли я различить любую другую мыслимую причину, по которой моя «setup_bean» может быть вызвана в игру. Я не думаю, что имеет к этому какое-то отношение? Я использую этот трюк, чтобы эффективно выполнять if/else логику в контексте. –
nsayer
@nsayer Сканирование через документы Я не вижу ничего, указывающего на такой вывод об псевдониме. В любом случае, он разрешает «option_A». –
@nsayer Я не уверен, к чему относится ваше 'if-else', но вам, вероятно, лучше использовать« Профили ». –