Spring框架核心源代码的分析及其感受-6
}
????????????? else {
????????????????? if (this.logger.isInfoEnabled()) {
???????????????????? this.logger.info("Overriding bean definition for bean '" + beanName +
??????????????????????????? "': replacing [" + oldBeanDefinition + "] with [" + beanDefinition + "]");
????????????????? }
????????????? }
?????????? }
?????????? else {
????????????? this.beanDefinitionNames.add(beanName);
????????????? this.frozenBeanDefinitionNames = null;
?????????? }
?????????? this.beanDefinitionMap.put(beanName, beanDefinition);
?
?????????? resetBeanDefinition(beanName);
?????? }
??? }
?
OK!对于XML配置信息,我们知道了Spring的处理过程,XML加载->解析并存入BeanDefinition->将BeanDefinition存入HashMap(注册的过程),以便其他程序使用。
?
从上面的分析可以知道,这个过程中没有用到什么漂亮的东西,顶多用到了XML解析(SAX)和面向对象的基本理念(继承、接口、模板设计模式等等),其实实现一个“系统”并不复杂,而是我们如何利用基本的原材料(基础技术)来将它们融合起来,那么方法就是对“领域”过程的关注点分离 ,然后再组合的过程。我下一篇将直接进入ApplicationContext对象的getBean方法取寻找依赖注入和对象工厂的细节。