Я изучаю для сертификации Spring Core, у меня есть некоторые сомнения относительно того, как Spring обрабатывает жизненный цикл beans и, в частности, о постпроцессоре bean/STRONG > .
Итак, у меня есть эта схема:
Для меня довольно ясно, что это значит:
В фазу Загрузить Bean Определения происходит следующее:
-
Обработаны классы @Configuration и/или @Components. отсканированные и/или XML файлы.
-
bean определения, добавленные в BeanFactory (каждый индексируется под его идентификатором)
-
Вызывается специальный BeanFactoryPostProcessor beans, он может модифицировать определение любого Bean (например, для замены значений свойств-заполнителей).
Затем на этапе beans происходит следующее:
-
Каждый Bean сгенерирован по умолчанию (создается в правильном порядке с вложенными зависимостями).
-
После инъекции зависимостей каждый Bean проходит постобработку фазу, в которой могут возникнуть дополнительные конфигурации и инициализации.
-
После пост-обработки Bean полностью инициализируется и готово к использованию (отслеживается по его идентификатору до тех пор, пока контекст не будет уничтожен)
Хорошо, это довольно ясно для меня, и я также знаю, что есть два типа пост-процессоров Bean, которые:
-
Инициализаторы: Инициализируйте Bean, если это указано (т.е. @PostConstruct).
-
Все остальные:, которые позволяют выполнить дополнительную настройку и что может выполняться до или после этапа инициализации
И я помещаю этот слайд:
Таким образом, для меня очень ясно, что делают столбцы инициализаторы Bean (это методы, аннотированные с помощью аннотации @PostContruct и которые автоматически вызывается сразу после методы setter (поэтому после инъекции dependecy), и я знаю, что я могу использовать для выполнения некоторой партии инициализации (как заполнение кеша, как в предыдущем примере).
Но что именно представляет собой следующий пост-процессор Bean? Что означает, что они выполняются до или после фазы инициализации?
Итак, мой Bean создается и выполняется инъекция зависимостей, поэтому фаза инициализации выполняется (путем выполнения аннотированного метода @PostContruct). Что означает, что пост-процессор Bean выполняется до фазы инициализации? Это означает, что это произойдет до выполнения @PostContruct аннотированного метода? Таким образом, int означает, что это может произойти до инъекции зависимостей (до этого вызываются методы setter)?
И что именно означает, что он выполняется после шага инициализации. Это означает, что после этого происходит exectuon метода @PostContruct, или что?
Я легко могу понять в голове, почему мне нужен метод @PostContruct, но я не могу представить типичный пример другого типа почтового процессора Bean, можете ли вы показать мне некоторые типичный пример использования?
Тпх