当前位置: 首页 > news >正文

深圳网站建设服务商万创网安康seo

深圳网站建设服务商万创网,安康seo,杭州企业做网站,网站备案和不备案的区别SpringBoot run方法代码如下: 可以看到它会调用refreshContext方法来刷新Spring容器,这个refreshContext方法最终会调用AbstractApplicationContext的refresh方法,代码如下 如上图,refresh方法最终会调用finisheBeanFactoryInit…

SpringBoot run方法代码如下:
在这里插入图片描述
可以看到它会调用refreshContext方法来刷新Spring容器,这个refreshContext方法最终会调用AbstractApplicationContext的refresh方法,代码如下在这里插入图片描述
在这里插入图片描述
如上图,refresh方法最终会调用finisheBeanFactoryInitialization方法,代码如下:
在这里插入图片描述
在这里插入图片描述
从上图可以看出,它最终会调用preInstantiateSingletons方法来实例化单例的bean,代码如下:
在这里插入图片描述
在这里插入图片描述
其中,每一个bean创建时都要调用getBean方法,getBean代码如下:
在这里插入图片描述
如上图,getBean调用doGetBean, doGetBean代码如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
整体逻辑就是先从缓存中获取bean,如果为空则调用createBean来创建bean,createBean代码如下:
在这里插入图片描述
在这里插入图片描述
从上图看到,createBean调用了doCreateBean来完成bean创建,doCreateBean代码如下:
在这里插入图片描述
在这里插入图片描述
从上图可以看到doCreateBean调用了initializeBean来完成对bean的初始化,initializeBean代码如下:
在这里插入图片描述
从上图可以看到它调用了applyBeanPostProcessorsAfterInitialization,这个方法代码如下:
在这里插入图片描述
可以看到,applyBeanPostProcessorsAfterInitialization中获取了Spring容器中所有的BeanPostProcessor,然后调用它们的postProcessAfterInitialization方法来对bean进行后置处理,而可能的代理对象就是通过BeanPostProcessor生成的。而InfrastructureAdvisorAutoProxyCreator这个BeanPostProcessor就是来完成代理对象生成的(当然,前提是加了@Transactional注解,否则不会生成代理对象,会直接返回原始对象)
在这里插入图片描述
InfrastructureAdvisorAutoProxyCreator的postProcessAfterInitialization代码如下:
在这里插入图片描述
其中调用了wrapIfNecessary方法,wrapIfNecessary代码如下:
在这里插入图片描述
从上图我们看到,如果specificInterceptors不为空,则会去生成代理对象并返回,否则直接将原始对象返回。

getAdvicesAndAdvisorsForBean代码如下:
在这里插入图片描述
它调用了findEligibleAdvisors方法,代码如下:
在这里插入图片描述
findEligibleAdvisors首先从Spring容器中获取所有的Advisor,然后调用findAdvisorsThatCanApply来获取可以应用的Advisor,findAdvisorsThatCanApply代码如下:
在这里插入图片描述
它调用了AopUtils的静态方法findAdvisorsThatCanApply方法,代码如下:
在这里插入图片描述
其中调用的canApply方法代码如下:
在这里插入图片描述
其中调用的canApply代码如下:
在这里插入图片描述
在这里插入图片描述
其中调用的matches方法代码如下:
在这里插入图片描述
其中调用的getTransactionAttribute方法代码如下:
在这里插入图片描述
在这里插入图片描述
其中调用的computeTrasactionAttribute代码如下:
在这里插入图片描述
在这里插入图片描述
其中调用的findTransactionAttribute代码如下:
在这里插入图片描述
其中调用的determineTransactionAttribute代码如下:
在这里插入图片描述
其中会分别调用Spring容器中的TransactionAttributeParser进行注解分析,实际上只有一个SpringTransactionAttributeParser,SpringTransactionAttributeParser的parseTransactionAnnotation代码如下:
在这里插入图片描述
从上图可以看到,要从传入的元素(实际就是我们定义的业务方法)来获取它是否包含@Transactional注解,如果包含,则调用parseTransactionAnnotation来获取注解上配置的事务相关的属性(也就是在@Transactional注解上配置的那些值)
在这里插入图片描述
因此,最终决定是否生成代理对象的是parseTransactionAnnotation方法的返回值
在这里插入图片描述
一步一步往回返,最终返回到AbstractAutoProxyCreator的wrapIfNecessary方法:
在这里插入图片描述
如果parseTransactionAnnotation方法返回的是null,则这里的specificInterceptors为空,不会生成代理对象。
如果parseTransactionAnnotation方法返回的不是null,则这里的specificInterceptors大小为1,则会调用createProxy创建代理对象。

以上分析了是否要创建代理对象,开始分析代理对象的创建过程。createProxy代码如下:
在这里插入图片描述
在这里插入图片描述
可以看到,首先new出一个Proxy,然后设置targetSource(也就是bean的原始类型)和用于事务处理的Advisor,最有调用getProxy,getProxy代码如下:

在这里插入图片描述
其中调用的createAopProxy代码如下:
在这里插入图片描述
其中调用的createAopProxy代码如下:
在这里插入图片描述
默认情况下,SpringBoot会使用ObjenesisCglibAopProxy,如上图。ObjenesisCglibAopProxy的getProxy代码如下:
在这里插入图片描述
在这里插入图片描述
可以看到它最终会调用createProxyClassAndInstance方法来创建出代理对象,它的代码如下:
最终代理对象生成

http://www.hkea.cn/news/515369/

相关文章:

  • 装修设计网站哪个平台最好软文推广多少钱一篇
  • 怎么做微信里的网页网站链接网站设计平台
  • 长宁专业做网站网络营销案例分享
  • 哈尔滨专业建网站哪家好码迷seo
  • 涞水县住房和城乡建设局网站厦门seo专业培训学校
  • 网站建设销售招聘德阳seo
  • 平台网站建设的公司seozou是什么意思
  • wordpress 相册 主题seo整站优化技术培训
  • 做窗帘网站图片百度自动点击器下载
  • 飘雪影视大全免费观看视频快推达seo
  • 做网站的装饰标语seo宣传网站
  • 国外 平面设计 网站百度收录
  • 做网站话术简述搜索引擎的工作原理
  • 现在建设网站赚钱吗seo外链论坛
  • 青海网站建设企业海南百度竞价推广
  • 南京做网站yuanmus电脑突然多了windows优化大师
  • 美国做deals的网站软文营销经典案例优秀软文
  • 招标网站怎么做吴江seo网站优化软件
  • 苏州建设工程协会网站seo去哪里学
  • 上海正规网站制作价格可口可乐软文营销案例
  • 番禺网站 建设信科网络站长之家ping
  • 建筑工程施工承包合同关键词优化报价推荐
  • 网站可以免费看企业网站系统
  • 中华人民共和国建设部网站seo怎么快速提高排名
  • 南宁做网站的有几家东莞网络营销网站建设
  • 苏州知名网站建设开发新区seo整站优化公司
  • 政府建设网站计划书品牌营销策略包括哪些内容
  • 深圳市做网站百度seo排名点击器app
  • 五莲网站建设维护推广网络营销推广及优化方案
  • 重庆网红整站多关键词优化