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

Как вызвать destroy() у Prototype бина

В Spring destroy() метод у Prototype бина не вызывается автоматически контейнером, в отличие от Singleton бинов. Для вызова destroy() нужно:

  1. Реализовать DisposableBean интерфейс или указать метод с аннотацией @PreDestroy
  2. Самостоятельно вызвать destroy метод, когда бин больше не нужен

Пример:

java
@Component
@Scope("prototype")
public class PrototypeBean implements DisposableBean {
    @Override
    public void destroy() {
        System.out.println("Destroying prototype bean");
    }
}

// Где-то в коде:
ConfigurableApplicationContext context = ...;
PrototypeBean bean = context.getBean(PrototypeBean.class);
// Используем бин...
context.getBeanFactory().destroyBean(bean);  // Явный вызов destroy

Важно помнить, что ответственность за вызов destroy() лежит на клиентском коде.

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

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

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

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