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

Можно ли определить какой Bean внедрять по условию в Spring

В Spring можно условно выбирать бин для внедрения несколькими способами:

  1. @Profile - бины создаются только при активном профиле:
java
@Profile("dev")
@Service
public class DevService implements MyService {...}

@Profile("prod")
@Service
public class ProdService implements MyService {...}
  1. @Conditional - более гибкие условия через Condition:
java
@Conditional(OnProductionCondition.class)
@Service
public class ProdService implements MyService {...}
  1. @Qualifier - явное указание имени бина:
java
@Autowired
@Qualifier("devService")
private MyService service;
  1. @Primary - задает бин по умолчанию при неоднозначности.

Также можно использовать фабрику бинов с програмной логикой выбора. В Spring Boot есть удобные аннотации типа @ConditionalOnProperty.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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