Sobes.tech
Senior
48

Šta će se dogoditi pri pokretanju aplikacije ako više beana odgovara jednom tipu?

Компаније где су питане
Позитив Технолоджис

Одговор од АИ

sobes.tech АИ

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

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

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

Пример:

@Component
@Primary
public class ServiceImpl1 implements MyService {}

@Component
public class ServiceImpl2 implements MyService {}

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