太原房产网:spring——AOP原理及源码(三)

2021-10-04 213 views 4

扫一扫用手机浏览

  “《在》上一篇中”,【我】们〖创建〗并《在》BeanFactory 中注册了[AnnotationAwareAspectJAutoProxyCreator〖组件〗。『本篇我们』将要探究,这个〖组件〗{是}《在》哪里以及【何【时】发挥作用 的[[】。

 

<调试 的[[起点>

  「我们直接开始调试」,{之}前‘看’过 的[[<断点>就直接【跳过了】,「一」直跳(到)「下」一个<断点>直<(到)来(到)> AbstractAutoProxyCreator.postProcessBeforeInstantiation()

 

《不同后置处《理》器 的[[差异》

  (这个『「“『 ‘{方}法’[』”」』名叫)postProcessBeforeInstantiation,{仔细‘看’会发现{和}后}置处《理》器BeanPostProcessor〖{是}不一样 的[[〗,《我们拉(到)上面能‘看’(到)》AbstractAutoProxyCreator 实现 的[[{是}[

SmartInstantiationAwareBeanPostProcessor 这个接口[

 

 『进入』SmartInstantiationAwareBeanPostProcessor 这个接口[会‘看’(到)它又继{承了}InstantiationAwareBeanPostProcessor

 

 再『进入』InstantiationAwareBeanPostProcessor「可以‘看’(到)它继承 的[[也」{是}BeanPostProcessor

‘但’InstantiationAwareBeanPostProcessor(实现 的[[两个方)法名字如「下」:

 

  不同于[BeanPostProcessor“中 的[[”postProcessBeforeInitialization{和}postProcessAfterInitialization

可见后置处《理》器也{是}存《《在》差异 的[[》。

‘结论’:AnnotationAwareAspectJAutoProxyCreator{是}InstantiationAwareBeanPostProcessor(类)型 的[[后置处《理》器

 

「《从》头‘看’」起

我们还{是}「《从》头‘看’」起,‘看’程序{是}怎么走(到)这一“步 的[[”。 

 

 《在》Frames<框中>《从》测试『「“『 ‘{方}法’[』”」』开始, 往上[查‘看’:

1、refresh【刷新〖创建〗容器】实“〖例〗”化剩「下」 的[[所有单实“〖例〗”bean

2、finishBeanFactoryInitialization(beanFactory) 实“〖例〗”化剩「下」 的[[所有单实“〖例〗”bean

 

 3、 再往上[走,beanFactory《『调用』了》preInstantiateSingletons()

4、《一直》往上走直(到)AbstractAutowireCapableBeanFactory.createBean(),如「下」图

   “第四步经历”了:

    1.   getBean
    2.   doGetBean
    3.   getSingleton
    4.   getObject
    5.   createBean

   这一系列过程{和}上篇中〖创建〗AnnotationAwareAspectJAutoProxyCreator 的[[过程{是}一模一样 的[[,

  不过上篇〖创建〗AnnotationAwareAspectJAutoProxyCreator【时】,我们经历上述过程后『进入』 的[[{是}doCreateBean『「“『 ‘{方}法’[』”」』,最终〖创建〗出了bean

而《在》这里,我们执{‘行’} 的[[{是}《在》doCreateBean 上面 的[[[resolveBeforeInstantiation『「“『 ‘{方}法’[』”」』

 

(这【时】AnnotationAwareAspectJAutoProxyCreator早已经〖创建〗好放入容器,我们现《在》做 的[[{是}完成其〖他所有〗bean 的[[实“〖例〗”化)

如「下」图,{我们可以发现},“当前 的[[”resolveBeforeInstantiation正{是}《在》doCreateBean『「“『 ‘{方}法’[』”」』 的[[上面

说明当【时】也《『调用』了》resolveBeforeInstantiation『「“『 ‘{方}法’[』”」』,「只不过」<返回> 的[[bean<为>null,‘所以才有了『调用』’doCreateBean来〖创建〗bean

 

现《在》我们可以知道,《在》所有bean〖创建〗之前,『都会先『调用』』resolveBeforeInstantiation『「“『 ‘{方}法’[』”」』

  『「“『 ‘{方}法’[』”」』上 的[[注释表明,『「“『 ‘{方}法’[』”」』会给后置处《理》器一(个机会来返)回目标bean实“〖例〗” 的[[代理〖对象〗。也就{是}<返回>一个代理〖对象〗来代替我们将要〖创建〗( 的[[ 的[[目标)bean

  现《在》我们把注意力放《在》resolveBeforeInstantiation这个『「“『 ‘{方}法’[』”」』上

  《在》『「“『 ‘{方}法’[』”」』栈中继续 往上[查‘看’,「我们来(到)了」resolveBeforeInstantiation『「“『 ‘{方}法’[』”」』 的[[1011{‘行’}

  《从》1011(到)1013{‘行’},『调用』applyBeanPostProcessorsBeforeInstantiation<返回>bean,接着进{‘行’}判断,如果<返回> 的[[bean不<为>null

  接着执{‘行’}applyBeanPostProcessorsAfterInitialization『「“『 ‘{方}法’[』”」』

 

  接「下」来我们先『进入』applyBeanPostProcessorsBeforeInstantiation『「“『 ‘{方}法’[』”」』,「将会循环遍历」所有 的[[后置处《理》器

判断如果{是}InstantiationAwareBeanPostProcessor(类)型,就执{‘行’}它 的[[postProcessBeforeInstantiation『「“『 ‘{方}法’[』”」』

 

上面我们提(到)过后置处《理》器存《在》差异,《我们》 的[[AnnotationAwareAspectJAutoProxyCreator刚好就{是}属于InstantiationAwareBeanPostProcessor这个(类)型

所以接「下」来我们来(到)当初设置 的[[ 的[[后置处《理》器<断点>,并执{‘行’}AnnotationAwareAspectJAutoProxyCreator 的[[postProcessBeforeInstantiation『「“『 ‘{方}法’[』”」』

 

 

「总结」

   〖由以上整个过程〗,「我们可以得出」:《在》所有bean实“〖例〗”化 的[[【时】候,都会『调用』AnnotationAwareAspectJAutoProxyCreator 的[[postProcessBeforeInstantiation『「“『 ‘{方}法’[』”」』。『「“『 ‘{方}法’[』”」』尝试<返回>一个代理〖对象〗,用来代替《我们》 的[[目标实“〖例〗”。

 

《在》「下」一篇中,我们将探究后置处《理》器 的[[『「“『 ‘{方}法’[』”」』,探究究竟{是}如何给实“〖例〗”〖创建〗代理〖对象〗。

 

 

,

sunbet安卓「下」载

欢迎『进入』sunbet安卓「下」载!Sunbet {申博提供申博(开户)}(sunbet(开户))、SunbetAPP「下」载、Sunbet客户端「下」载、Sunbet 代理合[作等业务。

Allbet网站内容转载自互联网,如有侵权,联系www.ALLbetgame.us删除。

本文链接地址:http://www.lijiweihejin.com/post/919.html

相关文章

发表评论

  • 本年杰尼狮成员注入亮眼新血,以队长陈杰宪为首,带领狮队苏智杰、潘彦廷、郭阜林、施子谦、黄赏赐等球星,最令球迷期待的新秀林安可也将一同介入。为了显现更多元型男魅力精力,全员更初次尝试不同于往的抽象拍摄时髦帅照,带着崭新面貌表态于天母球场驱逐喜欢杰尼狮的球迷,不管你是哪队球迷,一同出场享用追星帅气魅力,就是要让球迷大饱眼福。人物好喜欢!

    2020-12-06 00:00:45 回复该评论
  • USDT充值接口菜包钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台。免费提供Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜包Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。粉丝都是小宝贝

    2021-01-10 00:01:33 回复该评论
    • 电银付APP安装教程(dianyinzhifu.com)是官方网上推广平台。在线自动销售电银付激活码、电银付POS机。提供电银付安装教程、电银付使用教程、电银付APP使用教程、电银付APP安装教程、电银付APP下载等技术支持。面对全国推广电银付加盟、电银付大盟主、电银付小盟主业务。未来前途光明啊

      2021-01-17 02:32:34 回复该评论
      • 新2信用平台出租rent.22223388.com

        皇冠运营平台(rent.22223388.com)是皇冠(正网)接入菜宝钱包的TRC20-USDT支付系统,为皇冠代理提供专业的网上运营管理系统。系统实现注册、充值、提现、客服等全自动化功能。采用的USDT匿名支付、阅后即焚的IM客服系统,让皇冠代理的运营更轻松更安全。

        有智慧有想法

        2021-01-26 14:55:35 回复该评论