Sobes.tech
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;
    }
}