Весной, если есть два идентификатора bean, которые относятся к одному классу, и мы просто хотим вводить значения только из одного компонента, тогда мы обычно используем следующие аннотации в совокупности:
@Autowired
@Qualifier("bean1")
Как добиться того же, используя спецификацию xml? Какова альтернатива использования аннотации классификатора в xml?
Не точная альтернатива, но вы можете использовать autowire-candidate="false"
для всех этих bean-компонентов, которые вы хотите исключить из автообновления, кроме того, который должен быть автообновлен.
Также вам нужно указать тот конкретный компонент, который подходит для автоустройства, явно обозначив primary="true"
для него, а primary="false"
для остальных.
Итак, примерно ваша xml-конфигурация должна выглядеть ниже, если вы ожидаете, что bean1
будет автоуведомлен <bean id="bean1" class="xyzClassA" primary="true" autowire-candidate="true"/> <bean id="bean2" class="xyzClassA" primary="false" autowire-candidate="false"/> <bean id="bean3" class="xyzClassA" primary="false" autowire-candidate="false"/>
Обратите внимание, что как autowire-candidate
и primary
являются свойствами для тега beans
и имеют значение по умолчанию как true
.