Предисловие
В предыдущей статье упоминается, что через интерфейсы, такие как инициализация и одноразовые, могут быть сделаны некоторые пользовательские операции для инициализации и уничтожения бобов. Отнесее отметить, что это просто операция после того, как боб создается контейнером. В мире весны, если вы хотите что -то сделать в процессе экземпляров, как обычный бизнес -разработчик, очевидно, вам не нужно наследовать приложение Context или Beanfactory, потому что пружинный контейнер предоставляет нам некоторые интерфейсы, позволяя нам расширить операцию инициализации бобов BeanFactory в форме подключаемых, включая нашего протеста сегодня - Beanpostprocessor (в настоящее время.
Исходный код, коснутесь взгляда
Это использование очень просто. У этого есть только два метода. Мы реализуем наш собственный BeanpostProcessor, и Spring может автоматически зарегистрировать его в контейнер.
где метод до того, как выполняется после экземпляра бобов, после настройки свойства, но перед методом инициализации; После выполнения метода после различных методов инициализации.
Говоря об этом, некоторые люди могут задаться вопросом, в чем разница между этим и другими интерфейсами инициализации в жизненном цикле? Другие методы инициализации также могут изменить бобы. Этот вопрос хорош. Давайте поговорим о существенной разнице между этим интерфейсом и одноразовым интерфейсом инициализируемой и инициализируемой и методом настраиваемого инициативного уничтожения.
Здесь есть два специальных BPP. Я должен сказать, что если вам нужно настроить аннотацию, аналогичную функции @autowire или @Inject (вы можете использовать IncectionMetadata), обычные BPP могут не удовлетворить ваши потребности, и вы можете использовать два специальных BPP.
MERGEDBEANDEFINITIONPOSTPROCORSOR (далее именуемый MBDPP)
Instantiationawarebeanpostprocessor (далее называется IABPP)
Все они наследуют от BPP, но точка входа в процесс создания пружинных бобов отличается от обычной BPP.
Instantiationawarebeanpostprocessor interface
Смотрите комментарии
Метод Postprocessbebeforeinstantiation
Проверьте метод CreateBean AbstractautowireCapableBeanFactory (этот метод является основным методом создания бобов в контейнерах для пружины). Вы можете видеть, что после экземпляра постпроцесса, предшествующего экземпляру, постпроцессафтеринстатиации устанавливается после экземпляра и перед инъекцией аутоивола. Обычно он используется внутри весенней рамки, но здесь есть большой потенциал. Используйте PostProcessBeforeInstantiation для генерации объектов прокси (общий метод состоит в том, чтобы сделать возврат после обработки постпроцессора. Смотрите исходный код:
Метод PostProcessPropertyValues
Используйте PostProcessPropertyValues, чтобы завершить различные операции по объектам, метаданным анализом в аннотациях и т. Д. Spring's @autowire Incement, @Inject JSR330 и JSR250 @Resource и другие операции впрыскивания завершены с помощью этого метода.
Этот интерфейс используется весной, и заинтересованные студенты могут прочитать исходный код. Ниже приведены две типичные реализации.
AutoWireDannotationBeanpostProcessor
Abstractautoproxycreator
MERGEDBEANDEFINITIONPOSTPROCORSOR Интерфейс
Этот интерфейс проходит в корневой оболочке, что позволяет нам изменить определение бобов. @Autuwiredannotationbeanpostprocessor использует этот метод для проверки и регистрации участников, которые необходимо вводить.
BeanFactoryPostProcessor (BFPP)
В дополнение к Beanpostprocessor, есть еще одна вещь, которую все знают, то есть Beanfactorypostprocessor
BFPP является важным плагином для расширения для BeanFactory и может быть настроен с помощью Beandefinition. Его основное отличие от BPP:
Ладно, после того, как так много скажем, давайте посмотрим на общую блок -схему весеннего создания бобов. Здесь отмечены только более критические узлы.
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.