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

Управляет ли Spring жизненным циклом бина, если используется Prototype

Да, Spring управляет жизненным циклом prototype-бина, но только до момента его создания и инициализации. После возврата бина клиенту Spring больше не отслеживает его состояние.

Для prototype-бинов:

  • Вызываются callback-методы @PostConstruct и InitializingBean.afterPropertiesSet()
  • Не вызываются @PreDestroy и DisposableBean.destroy() (т.к. Spring не отслеживает завершение жизни prototype-бинов)

Пример:

java
@Component
@Scope("prototype")
public class PrototypeBean implements InitializingBean, DisposableBean {
    @PostConstruct
    public void init() {
        System.out.println("PostConstruct called");
    }
    
    @Override
    public void afterPropertiesSet() {
        System.out.println("afterPropertiesSet called");
    }
    
    @PreDestroy
    public void cleanup() {
        // Не будет вызван для prototype!
        System.out.println("PreDestroy called");
    }
    
    @Override
    public void destroy() {
        // Не будет вызван для prototype!
        System.out.println("destroy called");
    }
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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