Sobes.tech
Senior
56

Ką įvyks paleidus programą, jei keli bean'ai tinka vienam tipui?

Įmonės kur klausė
Позитив Технолоджис

Atsakymas iš 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