Sobes.tech
Senior
51

Co się stanie podczas uruchamiania aplikacji, jeśli kilka beanów pasuje do jednego typu?

Firmy, w których zadano pytania
Позитив Технолоджис

Odpowiedź od AI

sobes.tech AI

Если при старте Spring-приложения несколько бинов подходят для внедрения по одному типу (например, интерфейсу), то возникнет конфликт, и контекст не сможет однозначно выбрать, какой бин использовать. В результате приложение выбросит исключение NoUniqueBeanDefinitionException.

Чтобы решить эту проблему, можно:

  • Использовать аннотацию @Primary на одном из бинов, чтобы указать предпочтительный.
  • Внедрять бин по имени с помощью @Qualifier.
  • Пересмотреть дизайн, чтобы избежать неоднозначности.

Пример:

@Component
@Primary
public class ServiceImpl1 implements MyService {}

@Component
public class ServiceImpl2 implements MyService {}

// Внедрение
@Autowired
private MyService myService; // будет внедрен ServiceImpl1