}
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 方法取寻找依赖注入和对象工厂的细节。