Middle
57
questionbank

Каков цикл жизни Spring Beans?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech
  1. Инициализация:

    • Создание объекта Bean.
    • Заполнение свойств через Dependency Injection (@Autowired, @Value и т.д.).
    • Выполнение метода setBeanName() (если Bean реализует BeanNameAware).
    • Выполнение метода setBeanFactory() (если Bean реализует BeanFactoryAware).
    • Выполнение метода setApplicationContext() (если Bean реализует ApplicationContextAware).
    • Выполнение метода postProcessBeforeInitialization() методов BeanPostProcessor.
    • Выполнение инициализационных методов:
      • @PostConstruct аннотированные методы.
      • Метод, указанный в атрибуте initMethod определения Bean-а.
      • Метод afterPropertiesSet() (если Bean реализует InitializingBean).
    • Выполнение метода postProcessAfterInitialization() методов BeanPostProcessor.
  2. Использование:

    • Bean готов к использованию.
  3. Уничтожение (при завершении контекста Spring):

    • Выполнение метода postProcessBeforeDestruction() методов DestructionAwareBeanPostProcessor.
    • Выполнение методов уничтожения:
      • @PreDestroy аннотированные методы.
      • Метод, указанный в атрибуте destroyMethod определения Bean-а.
      • Метод destroy() (если Bean реализует DisposableBean).
    • Выполнение метода postProcessAfterDestruction() методов DestructionAwareBeanPostProcessor.
java
ШагОписаниеПример
1Создание экземпляра Beannew MySpringBean()
2Заполнение свойств (DI)bean.setMyProperty("value")
3BeanNameAware.setBeanName()Вызывается если Bean реализует интерфейс BeanNameAware
4BeanFactoryAware.setBeanFactory()Вызывается если Bean реализует интерфейс BeanFactoryAware
5ApplicationContextAware.setApplicationContext()Вызывается если Bean реализует интерфейс ApplicationContextAware
6BeanPostProcessor.postProcessBeforeInitialization()Обработка до инициализации
7InitializingBean.afterPropertiesSet()Вызывается если Bean реализует интерфейс InitializingBean
8@PostConstruct методМетод, аннотированный @PostConstruct
9init-method из конфигурацииМетод, указанный в атрибуте initMethod
10BeanPostProcessor.postProcessAfterInitialization()Обработка после инициализации
11Bean готов к использованиюВызов методов Bean-а
12DestructionAwareBeanPostProcessor.postProcessBeforeDestruction()Обработка до уничтожения
13DisposableBean.destroy()Вызывается если Bean реализует интерфейс DisposableBean
14@PreDestroy методМетод, аннотированный @PreDestroy
15destroy-method из конфигурацииМетод, указанный в атрибуте destroyMethod
16DestructionAwareBeanPostProcessor.postProcessAfterDestruction()Обработка после уничтожения