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

Можно ли запустить PreDestroy в Prototype

В Spring @PreDestroy не вызывается для бинов с областью видимости prototype. Это связано с тем, что Spring не управляет полным жизненным циклом prototype-бинов — после создания и передачи клиенту контейнер больше не отслеживает их состояние. Если нужно выполнить cleanup, можно:

  1. Использовать ручное управление (например, явный вызов метода).
  2. Реализовать DisposableBean или AutoCloseable и вызывать close() вручную.

Пример:

java
@Component
@Scope("prototype")
public class PrototypeBean implements AutoCloseable {
    @Override
    public void close() {
        System.out.println("Cleanup logic here");
    }
}

// Использование:
try (PrototypeBean bean = context.getBean(PrototypeBean.class)) {
    // работа с бином
} // close() вызовется автоматически
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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