最近在分析Spring的源码,但对其中一个问题很困惑,现描述如下,希望各位帮忙分析一下:
在IoC容器实例化Bean后,Bean只是个半成品,IoC容器将调用BeanWrapper的实现类BeanWrapperImp对这个实例进行属性值填充的后续工作。BeanWrapperImpl的类结构如下所示:
PropertyEditorRegistry
|
PropertyEditorRegistrySupport
|
BeanWrapper AbstractPropertyAccessor
| |
|___________________|
|
BeanWrapperImpl
在PropertyEditorRegistrySupport中定义了两个Map类型的defaultEditors和customEditors,用于存放常见类型(String Integer等原子类型)和自定义类型的属性编辑器。
private Map defaultEditors;
private Map customEditors;
所以,BeanWrapperImpl也拥有继承了这些编辑器,但是我有一点不明白的是,为什么BeanWrapperImpl不是容器级的,而是Bean级的:即在容器主控制程序中,每实例化一个Bean时,都要new一个BeanWrapperImpl实例出来,请看:
protected BeanWrapper instantiateBean(String beanName,
RootBeanDefinition mergedBeanDefinition)
throws BeansException {
Object beanInstance = getInstantiationStrategy().instantiate(mergedBeanDefinition, beanName, this);
[b]BeanWrapper bw = new BeanWrapperImpl(beanInstance);[/b]
initBeanWrapper(bw);
return bw;
}
这样一来属性编辑器的实例会被多次创建,因为每个BeanWrapperImpl对应一套属性编辑器,而在我看来这些属性编辑器应该是容器级的,也就是说只要保存一份就可以了,现在的情况是每创建一个Bean都对应一份,不但没有必要,而且浪费资源。
不知道是我没有看出其中的机巧,还是Rod的设计失误,请大家帮助分析一下,不胜感激。
分享到:
相关推荐
电改困惑:中国新能源并网为何难.pdf
无穷的困惑:个体行为的基础是什么?.pptx
投资界的最大困惑:何处寻找未来的腾讯和阿里
《C++程序设计》是一本深受程序员和计算机科学学生欢迎的经典教材,它深入浅出地介绍了C++这一...在解答过程中,遇到困难时,应当尝试自己分析问题,查阅相关资料,如果依然困惑,这些习题解答将成为宝贵的参考资源。
《软件设计师考试疑难问题解答》是一本专门为准备软件设计师资格考试的考生编写的参考资料,以.pdg格式提供,旨在帮助考生解决在学习过程中遇到的困惑和难题。此书集成了软件设计领域的核心知识点,涵盖了考试的重点...
### 案例分析:一个O2O产品经理的困惑 #### 一、产品背景与定位 **帮帮**是一款由58同城内部孵化的产品,它定位于个人服务交易的平台,提供诸如维修、宠物护理、摄影、职业咨询等多种服务。与58同城作为本地服务的...
前言:已经有一个月没写点什么了,感觉心里空落落的。今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧。之前分享过一篇C#进阶系列——WebApi接口传参不再困惑:传参详解,这篇博文内容本身...
ERP信息化建设中遇到的困惑解答
LDA模型可以将文档表示为主题的混合体,每个主题是一个词的分布。该模型可以用于文档分类、主题分析、词语聚类等自然语言处理任务。 知识点三:计算困惑度的Python代码 该资源提供了计算困惑度的Python代码,包括...
首先,我们要了解新闻的五个W和一个H,即:Who(谁)、What(什么)、When(何时)、Where(何地)、Why(为什么)和How(如何)。这六个要素是构成新闻报道的基础,任何一篇新闻都应该清晰地回答这些问题,以便读者...
【物业管理中的四个困惑】 物业管理作为现代城市生活的重要组成部分,它涉及到居民日常生活中的诸多方面,包括设施维护、环境管理、安全防护等。随着社会的发展,物业管理行业逐渐规范化,服务质量不断提升,但也...
上海住宅景观设计面临着一系列的困惑和问题,这些问题不仅关乎设计本身的质量,还直接影响到生态环境的保护和居民的...只有这样,才能真正实现经济、环境和社会效益的和谐统一,让每一个市民都能享受到绿色生活的关怀。
通过实际观察,学生们不仅能解答课本上的问题,还能够学会如何将学到的知识应用到实际情境中去。 将上述知识点融入到生活实践中,意味着每个人都应培养对周围事物的好奇心,锻炼敏锐的观察力,并且在遇到问题时勇于...
【知识点】 这个文档是关于幼儿园大班的一...综上所述,这个教学活动不仅仅是讲述一个故事,更是一次寓教于乐的认知之旅,帮助幼儿在故事中探索自我,理解动物世界,同时也培养了他们的观察力、想象力和问题解决能力。
3. 应用题教学的困惑:应用题教学旨在培养学生的逻辑思维能力,但传统方法可能过于枯燥。新课改强调数学与生活的联系,因此教师应设计与生活贴近的应用题,同时兼顾基本的解题技巧训练。线段图、数量关系等是理解...
破解内部审计的困惑与问题是一份关于内部审计的课后测试,涵盖了内部审计的基础知识、审计模式、风险评估、内控要素、审计独立性等方面的知识点。本文将对这些知识点进行详细的解释和分析。 一、内部审计的基础知识...
《C++程序设计基础习题及解答共八章》是一个针对C++初学者或准备C++考试者的宝贵资源。这份资料包含八章的习题和详细的解答,旨在帮助学习者巩固C++的基础知识,提高编程技能。以下是每章可能涵盖的知识点概览: 第...