Hardspring
Что такое Spring Bean lifecycle?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Bean lifecycle: instantiation → populate properties (@Autowired/@Value) → Aware callbacks → BeanPostProcessor → init callbacks → готов → destroy callbacks.
@Component
public class MyBean implements InitializingBean, DisposableBean {
@PostConstruct // 1. после inject зависимостей
public void init() { /* логика, зависящая от injected полей */ }
@Override
public void afterPropertiesSet() { /* 2. InitializingBean */ }
// 3. custom init-method через @Bean(initMethod = "...")
@PreDestroy // 4. при shutdown контекста
public void cleanup() { /* освобождение ресурсов */ }
@Override
public void destroy() { /* 5. DisposableBean */ }
}BeanPostProcessor.postProcessAfterInitialization— здесь AOP proxying;- Не использовать constructor для логики, зависящей от injected полей (они ещё null) —
@PostConstruct; ApplicationListener<ContextRefreshedEvent>— после полной готовности контекста;- Для prototype scope Spring не управляет destroy.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.