众所周知,Spring最为核心的两大功能特性就是IOC和AOP。我将通过一个简单的例子让大家明白IOC的底层实现原理。
Spring IOC实现步骤
- 加载并且保存Spring配置文件路径信息然后保存到configLocation中
- 刷新Spring上下文环境
- 创建并且载入DefaultListableBeanFactory(即BeanFactory)
- 根据DefaultListableBeanFactory创建XMLBeanDefinitionReader,用于后面读取xml配置文件信息
- 创建BeanDefinitionDelegate代理类,用于解析xml配置信息
- 解析xml中配置的import、bean、beans、alias等不同的标签信息,以便于可以使用不同的解析器进行解析
- 通过XMLBeanDefinitionReader结合location路径信息读取Resources资源信息
- 使用BeanDefinitionDelegate代理类解析Bean元素并且依次进行实例化操作,实例化完毕之后将Bean信息注册(put)到BeanDefinitionMap中以便于可以下次继续使用
Spring IOC底层实现
工厂设计模式
public interface ZhangFactory {
public Object getBean(String id);
}
通过构造器得到相关配置文件,经过dom4解析xml文件,解析xml中配置的import、bean、beans、alias等不同的标签信息,通过反射实例化得到对象,存入map中,key为id,value为对象。
public class ZhangPathXmlApplicationContext implements ZhangFactory{
Map<String,Object> target = new HashMap<>();
//通过构造器得到相关配置文件
public ZhangPathXmlApplicationContext(String fileName){
<