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

Как настроить Spring для создания нового экземпляра бина @Component класса, где он используется через @Autowired

Для создания нового экземпляра бина при каждом использовании через @Autowired нужно использовать аннотацию @Scope("prototype") над классом компонента. По умолчанию Spring создает синглтоны, но с этой аннотацией будет создаваться новый экземпляр при каждом внедрении или вызове getBean().

Пример:

java
@Component
@Scope("prototype")
public class PrototypeBean {
    // ...
}

@Service
public class MyService {
    @Autowired
    private PrototypeBean prototypeBean; // Каждый раз будет новый экземпляр
}

Важно: если PrototypeBean внедряется в Singleton-бин, то Spring создаст его только один раз при инициализации контекста. Для получения нового экземпляра при каждом вызове нужно использовать:

  1. @Lookup метод
  2. ApplicationContext.getBean()
  3. ObjectProvider (рекомендуемый способ)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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