IOC
原理
动态加载对象实例,动态装配;
IOC xml 版本 原理
容器启动阶段:
1、加载配置文件信息;——依靠ResouceLoader载并且解析资源(xml文件),封装成Resouce;
2、装配BeanDefinition;——利用BeanDefinitionReader读取Resource 转换为BeanDefinition,BeanDefition含有这个Bean的Class对象(类信息对象)(并非Bean本身,为后续根据Class生成具体实例Bean做准备)。然后注册BeanDefinition. 就是把信息存放到一个concurrentHashMap中,key为bean的名字,value为beandefinition,等待实例化。
到这里时,可以实现容器启动阶段的定制操作。
可以通过实现BeanFactoryPostProcessor接口来进行定制,就是获得BeanDefinition,修改BeanDefinition;
Bean实例化阶段:
3、利用bean的class对象反射机制生成bean对象;
4、根据BeanDefinition中属性信息,实例化属性对象,装配依赖;

网友评论