Junior — Middle
Как да се предотврати конфликт при използване на два еднакви бина в Spring контейнера?
sobes.tech AI
Отговор от AI
В контейнера на Spring възниква конфликт, ако два бина имат едно и също име (идентификатор). За да предотвратите конфликта:
- Използвайте различни имена за биновете с помощта на анотацията
@Component("име")или в XML/Java конфигурацията. - Използвайте анотацията
@Qualifierпри инжектиране на зависимост, за да посочите ясно кой бин да се използва. - Направете един от биновете
@Primary, така той ще се използва по подразбиране при конфликт.
Пример с @Qualifier:
@Component("beanOne")
public class BeanOne {}
@Component("beanTwo")
public class BeanTwo {}
@Service
public class MyService {
private final BeanOne beanOne;
public MyService(@Qualifier("beanOne") BeanOne beanOne) {
this.beanOne = beanOne;
}
}