Как именно работает Spring BeanPostProcessor?

Я учусь на сертификацию Spring Core, и у меня есть некоторые сомнения относительно того, как Spring справиться сжизненный цикл бобов и в частности опочтовый процессор.

Итак, у меня есть эта схема:

Для меня совершенно ясно, что это значит:

Следующие шаги выполняются вЗагрузить определения бина фаза:

@Configuration классы обрабатываются и / или@Компоненты сканируются и / илиXML-файлы разобраны.

Определения Bean добавлены в BeanFactory (каждое индексируется под своим идентификатором)

СпециальныйBeanFactoryPostProcessor вызванные компоненты могут изменить определение любого компонента (например, для замены значений свойства-заполнителя).

Затем вфаза создания бобов:

Каждый bean-компонент с готовностью создается по умолчанию (создается в правильном порядке с добавлением зависимостей).

После внедрения зависимости каждый компонент проходит фазу постобработки, в которой может произойти дальнейшая конфигурация и инициализация.

После постобработки бин полностью инициализируется и готов к использованию (отслеживается по его идентификатору, пока контекст не будет уничтожен)

Хорошо, это довольно ясно для меня, и я также знаю, чтоЕсть два типа постпроцессоров бобов которые:

Инициализаторы: Инициализируйте bean-компонент, если указано (т. Е. @PostConstruct).

а такжеВсе остальные: которые позволяют для дополнительной конфигурации и чтоможет выполняться до или после шага инициализации

И я публикую этот слайд:

Так что для меня совершенно ясно, чтоинициализаторы постпроцессоры бина (это методы, аннотированные@PostContruct аннотации и которые автоматически вызываются сразу после методов установки (так после внедрения зависимости), и я знаю, что я могу использовать для выполнения некоторого пакета инициализации (как заполнить кэш, как в предыдущем примере).

Но что именно представляет другой постпроцессор EJB? Что мы имеем в виду, когда говорим, что эти шаги выполненыдо или после фазы инициализации?

Таким образом, мои bean-компоненты создаются, а их зависимости внедряются, поэтому фаза инициализации завершается (выполнением@PostContruct аннотированный метод). Что мы имеем в виду, говоря, что постпроцессор бина используется перед фазой инициализации? Это означает, что это происходит до того, как@PostContruct аннотированное выполнение метода? Означает ли это, что это может произойти до внедрения зависимости (до того, как будут вызваны методы установки)?

И что именно мы имеем в виду, когда говорим, что это выполняетсяпосле шага инициализации, Это означает, что это происходит после того, как выполнение@PostContruct аннотированный метод или как?

Я легко могу понять, зачем мне нужна@PostContruct аннотированный метод, но я не могу представить какой-то типичный пример другого вида постпроцессора бобов. Можете ли вы показать мне типичный пример того, когда используются?

Ответы на вопрос(3)

Ваш ответ на вопрос