Sobes.tech
Senior
54

Cosa succede all'avvio dell'applicazione se più bean sono adatti a un solo tipo?

Le aziende dove è stato chiesto
Позитив Технолоджис

Risposta dell'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