①:获取注入对象的类型;
②:解析过程中对@value注解支持;
③:通过findAutowireCandidates()方法 , 根据属性类型找到BeanFactory中所有类型匹配的Bean 。 存放在Map中返回 。 在该方法中 , 会根据给定的类型获取所有Bean的名称作为Map中的key 。
对类型匹配的Bean做相应的判断 , 如果大于1个 , 则通过determineAutowireCandidate()方法来确定注入Bean的名称 。 首先根据@Primary注解的对象来确定 , 如果有则返回;然后再通过@Priority注解的对象 , 如果有则返回 。 如果等于1个 , 在返回Map中的key就是beanName;通过上述的描述发现@Autowired注解属性的方式先通过byType的方式获取对应类型的对象;当对应类型的对象大于1个时 , 通过byName的方式来确定 。
④:最后descriptor.resolveCandidate(autowiredBeanName,type,this);通过beanFactory.getBean(beanName);获取注入的对象 。
4.2对象之间依赖关系的维护
在通过beanFactory.resolveDependency()方法获得依赖的对象之后 , 通过registerDependentBeans()方法来维护对象之间的依赖关系 。
publicvoidregisterDependentBean(StringbeanName,StringdependentBeanName){StringcanonicalName=canonicalName(beanName);/***dependentBeanMap中存储的是目前已经注册的依赖这个bean的所有bean,*这里从这个集合中获取目前所有已经注册的依赖beanName的bean集合,*然后看这个集合中是否包含dependentBeanName,即是否已经注册,*如果包含则表示已经注册,则直接返回;*否则,将bean依赖关系添加到两个map缓存即完成注册.*/synchronized(this.dependentBeanMap){SetdependentBeans=this.dependentBeanMap.computeIfAbsent(canonicalName,k->newLinkedHashSet<>(8));if(!dependentBeans.add(dependentBeanName)){return;}}synchronized(this.dependenciesForBeanMap){SetdependenciesForBean=this.dependenciesForBeanMap.computeIfAbsent(dependentBeanName,k->newLinkedHashSet<>(8));dependenciesForBean.add(canonicalName);}}上述的代码中 , 有两个Map 。 这里首先对这两个Map稍加解释:
/**指定的bean与目前已经注册的依赖这个指定的bean的所有依赖关系的缓存(我依赖的)*/privatefinalMap>dependentBeanMap=newConcurrentHashMap<>(64);/**指定bean与目前已经注册的创建这个bean所需依赖的所有bean的依赖关系的缓存(依赖我的)*/privatefinalMap>dependenciesForBeanMap=newConcurrentHashMap<>(64);复制代码在上述的方法中 , 就是通过上述两个Map维护了对象间依赖与被依赖的关系 , 详细看下图
推荐阅读
-
-
四川日报|四川:10月起 农村超百人"坝坝宴"需提前两天报告
-
小米|雷军演讲与moto发布会撞车 陈劲:纯属巧合
-
-
兔子娱乐|终于要成为过去式了,这是一个重要信号!美国霸权主导世界的时代
-
溪说笔谈|捆仙绳能不能捆住孔宣?答案很明显,封神演义中
-
#女性产后#女性产后多久来月经 三个因素让月经失调
-
养花匠小齐|不需要打理就能开花成片,真省心,?家门口种4种“懒人花”
-
「热剧天天乐」巴海军放出一段演练视频,用意很明显,印防长要求做好战斗准备后
-
「深圳市戈埃尔科技有限公司」电动牙刷应用防水透气膜的原因
-
央视新闻客户端|一图丨十位部长金句来了!下半年就这么干!
-
-
穿搭|换季入秋不管穿什么,牢记同色穿搭,不花哨不庸俗,简单才时髦
-
生理慧医师|要常吃此物,气色好了,皱纹少了,皮肤细腻了,女性不想早衰
-
俄罗斯|来自俄罗斯情侣档的甜蜜暴击!日常街拍也要秀恩爱,般配的时髦精
-
量子@实用型“量子计算机”怎么才算成功?超过这个量子“标准”才算!
-
『物联网』“五一”假期,一起到重庆科技馆探索物联网的奥秘
-
旅游微时光|一个在中国!,全球唯二无证驾驶也不会被抓的人:一个是英国女王
-
北青网综合|福州男子雨天蹚水回家,竟惹“毒”上身!
-