Sobes.tech
Senior
45

Пурси 5. Ду имплементацияи интерфейс вуҷуд дорад, чӣ мешавад вақте ки тағйирёбандаи навъи интерфейсро дар бинии Spring ворид мекунем? - Тағйирёбанда аввалин имплементацияро хоҳад дошт - Хатогӣ дар марҳилаи компилятсия рӯй медиҳад - Хатогӣ дар марҳилаи баланд бардоштани контекст рӯй медиҳад - Баъд аз версияи Spring вобаста аст

Ширкатҳо дар куҷо пурсиданд
RT Labs

Ҷавоб аз AI

sobes.tech AI

Если в Spring-контексте есть две реализации одного интерфейса, и вы пытаетесь внедрить зависимость по типу интерфейса без дополнительной квалификации (например, без использования @Qualifier или @Primary), то при старте приложения возникнет ошибка на этапе поднятия контекста. Spring не сможет однозначно определить, какую реализацию использовать, и выбросит исключение NoUniqueBeanDefinitionException.

Пример решения:

@Component
@Primary
public class FirstImplementation implements MyInterface { ... }

@Component
public class SecondImplementation implements MyInterface { ... }

// Тогда при инжекте
@Autowired
private MyInterface myInterface; // будет внедрена FirstImplementation

Или с использованием @Qualifier:

@Autowired
@Qualifier("secondImplementation")
private MyInterface myInterface;

Таким образом, правильный ответ: Возникнет ошибка на этапе поднятия контекста.