spring ioc流程

来源:互联网 发布:网页设计制作软件 编辑:程序博客网 时间:2024/06/18 13:39
1、加载xml文件
2、创建beanfactory,如果存在,销毁重新创建
3、通过xmlbeandefinitionreader指定BeanDefinitionDocumentReader去解析xml,生成document
4、将解析出来的bean的属性注册在BeanDefinitionHolder中的BeanDefinition对象中
5、将beanName作为key,BeanDefinition作为value,存入beanfactory的beanDefinitionMap中(如果xml内存在beanid相同的,就是以该map为依据进行判断)
6、ioc初始化完成后开始初始化非懒加载的bean
7、bean实例化spring通过两种方式实现,一种是BeanUtils方式,一种是cglib,默认采用cglib方式;BeanUtils方式通过构造器实例化bean,构造器通过配置的class反射得到
8、实例化后进行依赖注入,也是从BeanDefinition中获得propertity信息(xml大于注解),优先处理autowire注入
9、依赖注入时获取到引用的bean,通过beanfactory来实例化被依赖的bean
10、获取实例化的bean对象的PropertyDescriptor,然后获取get和set方法,如果set活着get方法不是public的,则设置方法为可访问setAccessible(true),然后invoke赋值     propertyvalue(保存一个bean的单独属性的值信息)




参考  :http://blog.csdn.net/z69183787/article/details/8443777