Ответ
Spring управляет начальными этапами жизненного цикла prototype-бина, но не финальными.
Полный контроль для singleton (для сравнения):
- Создание экземпляра
- Внедрение зависимостей (популяция свойств)
- Вызов методов инициализации
- Бин готов к использованию
- Вызов методов уничтожения при остановке контекста
Ограниченный контроль для prototype:
- ✅ Создание экземпляра
- ✅ Внедрение зависимостей
- ✅ Вызов методов инициализации:
- Методы, помеченные
@PostConstruct - Метод
afterPropertiesSet()интерфейсаInitializingBean - Метод init, указанный в
@Bean(initMethod = "...")
- Методы, помеченные
- ✅ Бин возвращается клиенту
- ❌ Методы уничтожения НЕ вызываются. Spring "забывает" о бине после шага 4.
Практический вывод: Всегда явно освобождайте ресурсы, занятые prototype-бином. Не полагайтесь на @PreDestroy или DisposableBean.