Можно ли использовать два идентификатора для одного Spring-Bean в Spring-Config? - PullRequest
0 голосов
/ 10 апреля 2019

Предположим, у нас есть Animal -Бобов, и мы хотим определить различных конкретных животных, таких как:

public interface Animal
...
public class Cat implements Animal
...
public class Dog implements Animal

И мы хотим ввести конкретных животных где-то вроде

@Autowired
@Qualifier("cat")
private Animal cat

Тогдамы можем определить Animal-Beans, используя идентификаторы и @Qualifiers.Все идет нормально.

Но что, если бы мы идентифицировали один и тот же класс Cat с разными идентификаторами, такими как "cat" и "timmy" (имя кота)?Другими словами, мы хотим сюръективный вместо биективного отображения .

Spring позволяет конфигурацию, подобную этой:

<bean id="cat" class="Cat"/>
<bean id="timmy" class="Cat"/>

Spring позволяет это и дает нам кота-Класс для обоих идентификаторов (хотя не один и тот же экземпляр).Это задумано специально или я неправильно использую Spring, чтобы однажды какая-нибудь будущая версия Spring больше не поддерживала это поведение (два идентификатора для одного компонента)?

1 Ответ

0 голосов
/ 10 апреля 2019

Это правильное поведение.

Если вы даете явно имя бобу, создается новый бин с этим классификатором.

Это полезно, и нет причин для его удаления.

Представьте, например, что происходит, если у вас есть приложение, которое имеет доступ к двум разным базам данных. Вам нужны два экземпляра источника данных. Вы можете легко сделать это, используя другой идентификатор.

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