Senior
58
¿Qué ocurrirá al iniciar la aplicación si varios beans son adecuados para un solo tipo?
Empresas donde se preguntó
Позитив Технолоджис
Respuesta de la IA
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