Spring源码浅析

 2019-11-23 11:00  阅读(873)
文章分类:Spring Cloud

启动Spring容器,加载xml配置文件

2019112310093\_1.png

调用构造器

2019112310093\_2.png

调用本类构造器,设置配置文件路径,然后执行refresh方法。

2019112310093\_3.png

refresh方法。

2019112310093\_4.png

进来先执行prepareRefresh准备方法,其中设置启动时间,其他设置等等,执行完会打印:

2019112310093\_5.png

refresh中继续执行:

2019112310093\_6.png

这里面会加载指定的xml配置文件,创建对象工厂。

refresh中继续执行:

2019112310093\_7.png

prepareBeanFactory中对象工厂的一些设置。

继续执行:

支持国际化功能的:

2019112310093\_8.png

初始化所有单实例bean:

2019112310093\_9.png

其中:

2019112310093\_10.png

再其中:拿到所有bean的名字

2019112310093\_11.png

然后,按顺序创建所有非懒加载的,单例的,非抽象的bean。

2019112310093\_12.png

2019112310093\_13.png

2019112310093\_14.png

所有的getBean方法都是调用doGetBean方法:

2019112310093\_15.png

在doGetBean方法里:

先检查是否有这个bean,第一次创建没有的。

有就去拿

2019112310093\_16.png

2019112310093\_17.png

所有单例bean放在这里:

2019112310093\_18.png

没有就创建:

2019112310093\_19.png

getSingleton方法:

先去拿:

2019112310093\_20.png

拿不到就创建:

2019112310093\_21.png

如果是新建的就添加到容器中:

2019112310093\_22.png

返回这个单例bean:

2019112310093\_23.png

ioc就是一个容器,单实例bean保存在一个map中;
DefaultSingletonBeanRegistry-singletonObjects;

Spring里面最大的模式就是
工厂模式;

BeanFactory:bean工厂;工厂模式;帮用户创建bean

BeanFactory:bean工厂接口;负责创建bean实例;容器里面保存的所有单例bean其实是一个map;是Spring最底层的接口;

ApplicationContext:是容器接口;更多的负责容器功能的实现;(可以基于beanFactory创建好的对象之上完成强大的容器),可以从map获取这个bean。

自定义类继承ApplicationContextAware或BeanFactoryAware接口可以获得ApplicationContext或BeanFactory。


来源:http://ddrv.cn/a/88268

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Spring源码浅析

相关推荐