Встречается на собеседованиях • сегодня

Что будет при старте двух бинов с одинаковым типом

При старте двух бинов с одинаковым типом Spring по умолчанию выбросит исключение BeanDefinitionStoreException, так как не сможет однозначно определить, какой бин инжектить.

Чтобы решить эту проблему, можно:

  1. Использовать @Qualifier для указания конкретного бина
  2. Сделать один из бинов @Primary
  3. Использовать имена бинов напрямую через @Resource

Пример:

java
@Configuration
class Config {
    @Bean
    @Primary
    MyService firstService() { return new MyService(); }

    @Bean
    MyService secondService() { return new MyService(); }
}

@Component
class Client {
    @Autowired
    MyService service; // будет инжектирован firstService
    
    @Autowired
    @Qualifier("secondService")
    MyService namedService;
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы