Назад к вопросам
СБЕР
СБЕР дейвайсы
Simbirsoft
Junior — Middle
97
Как используется аннотация @Qualifier и в каких случаях её применяют при внедрении зависимостей в Spring?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Аннотация @Qualifier в Spring используется для уточнения, какой именно бин нужно внедрить, если в контексте существует несколько кандидатов одного типа.
Когда у вас есть несколько реализаций одного интерфейса или класса, и вы используете @Autowired, Spring не сможет однозначно выбрать нужный бин и выбросит исключение. Чтобы решить эту проблему, применяют @Qualifier.
Пример:
@Component
public class ServiceA implements MyService {}
@Component
public class ServiceB implements MyService {}
@Component
public class Client {
private final MyService myService;
@Autowired
public Client(@Qualifier("serviceA") MyService myService) {
this.myService = myService;
}
}
Здесь @Qualifier("serviceA") указывает, что нужно внедрить бин с именем serviceA.
Используют @Qualifier:
- при наличии нескольких бинов одного типа;
- для явного указания нужного бина;
- для повышения читаемости и контроля внедрения зависимостей.