Пружина Авто-проводка - PullRequest
       0

Пружина Авто-проводка

2 голосов
/ 24 марта 2011

Предполагая, что у меня есть два класса Circle и Rectangle, которые реализуют интерфейс с именем Shape.
И у меня есть следующий класс:

public class ObjectFactory {
    @Autowired
    @Qualifier("circle")
    Shape shape;
.......
.......
.......
}

То, что я хочу сделать, это удалить @Qualifier и сделать так, чтобы автопровод зависел от некоторого условия (например, если условие истинно, тогда введите Circle, если условие ложно, введите прямоугольник) или сделайте проводку зависимой соглашение об именах.
Есть способ сделать это ?

Позвольте мне объяснить, если я удалю аннотацию @Qualifier, я получу следующее исключение

org.springframework.beans.factory.NoSuchBeanDefinitionException:
No unique bean of type [com.app.objects.Shape] is defined: 
expected single matching bean but found 2: [circle, rectangle]

Есть ли способ программно обработать это исключение, чтобы иметь автоматическую разводку в зависимости от состояния?

1 Ответ

1 голос
/ 24 марта 2011

Вы можете использовать SpEL в @Resource, возможно, вы можете использовать его и в @Qualifier.

Но обычно такую ​​логику можно поместить в FactoryBean, гдеВы можете решить, какой экземпляр вернуть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...