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