正文
postProcessBeanFactory(beanFactory);
invokeBeanFactoryPostProcessors(beanFactory);
registerBeanPostProcessors(beanFactory);
initMessageSource();
initApplicationEventMulticaster();
onRefresh();
registerListeners();
finishBeanFactoryInitialization(beanFactory);
finishRefresh();
}
catch
(BeansException ex) {
logger.warn(
"Exception encountered during context initialization - cancelling refresh attempt"
, ex);
destroyBeans();
cancelRefresh(ex);
throw
ex;
}
}
}
代码逻辑清晰的值得mark一下。这个方法的作用是创建加载Spring容器配置(包括.xml配置,property文件和数据库模式等)。
BeanFactory体系结构是典型的工厂方法模式,即什么样的工厂生产什么样的产品。要知道工厂是如何产生对象的,我们需要看具体的IOC容器实现,具体的实现有:如 DefaultListableBeanFactory 、 XmlBeanFactory 、 ApplicationContext 等。那么,究竟BeanFactory里到底是什么样的呢?
package org.springframework.beans.factory;
public interface BeanFactory {
String FACTORY_BEAN_PREFIX = "&";
Object getBean(String name) throws BeansException;
T getBean(String name, Class requiredType) throws BeansException;
T getBean(Class requiredType) throws BeansException;
Object getBean(String name, Object... args) throws BeansException;
boolean containsBean(String name);
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String name, Class> targetType)
throws NoSuchBeanDefinitionException;
Class> getType(String name) throws NoSuchBeanDefinitionException;
String[] getAliases(String name);