Xml格式的应用启动3
第3步:prepareBeanFactory(beanFactory),为该Context中持有的beanFactory实例做一些准备工作。
该方法的实现都在AbstractApplicationContext中,逻辑很清晰,我们一步一步分析它做了什么。
第一段
// Tell the internal bean factory to use the context's class loader etc.
beanFactory.setBeanClassLoader(getClassLoader());
beanFactory.setBeanExpressionResolver(new StandardBeanExpressionResolver(beanFactory.getBeanClassLoader()));
beanFactory.addPropertyEditorRegistrar(new ResourceEditorRegistrar(this, getEnvironment()));
setBeanClassLoader:设置加载Bean用哪个ClassLoader。
setBeanExpressionResolver:设置用来解析BeanDefinition中“EL表达式”的解析器,即写的那些形如#{...}
的Spring EL表达式。
addPropertyEditorRegistrar:设置属性编辑器,相当于registerCustomEditor的便捷操作,具体看到底做了什么:
public ResourceEditorRegistrar(ResourceLoader resourceLoader, PropertyResolver propertyResolver) {
this.resourceLoader = resourceLoader;
this.propertyResolver = propertyResolver;
}