码迷,mamicode.com
首页 > 编程语言 > 详细

Spring源码之 @lazy注解

时间:2019-09-19 14:08:21      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:ons   can   RoCE   determine   actor   代理   方式   ann   classType   

出现场景:

注解在属性上和@Autowired一起

构造器中参数前面

其他情况不讨论,只讨论这两种,按照之前关于自动注入博客,为属性和构造器参数赋值,用的是AutowiredAnnotationBeanPostProcessor的determineCandidateConstructors和postProcessPropertyValues方法,根据classType找到工厂中所有符合条件的beanName,

根据beanDefinition确定哪一个bean,实例化调用的是this.beanFactory.resolveDependency,在doResolveDependency之前,会进行多个lazy方式的处理,有Optional、ObjectFactory、ObjectProvider、Provider以及@lazy注解。

顺便提一句其中Provider类型在ribbon注入Eureka的serverList用得到

处理lazy注解是看descriptor中调用这个bean的方法(构造器方法或者set方法)有没有lazy注解,有的话,生成一个动态代理,在真正用的时候再调用doResolveDependency方法(这么麻烦的吗?)

 

Spring源码之 @lazy注解

标签:ons   can   RoCE   determine   actor   代理   方式   ann   classType   

原文地址:https://www.cnblogs.com/chuliang/p/11548602.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!