spring说到底就是一个IOC(控制反转)和DI(依赖注入)的容器,但是可能大部分人都不了解spring容器初始化过程,那么下面有兴趣的朋友们可以和小编一起来看看,spring容器初始化的过程究竟是如何实现的呢?
spring在启动的时候会去读取取应用程序提供的Bean配置信息,并且在spring容器当中生成一个相应的Bean配置注册表,然后会根据这张注册表来实例化Bean,用以装配号Bean之间的依赖关系,为上层应用去提供准备就绪的一些运行环境。
以下图片就描述了spring容器,从加载配置文件到创建出一个完整Bean的作业的流程:
最后我们再来看看spring容器-ApplicationContext的启动过程是怎样的:
ApplicationContext在其内部就封装了一个BeanFactory对象,用来来实现对容器的操作,在初始化完成之后,BeanFactory就封装了bean的信息,而且ApplicationContext是通过访问这个对象来获取bean的对象信息的(BeanDefinition/Bean对象,都是由BeanFactory实际创建并管理的),那么为了实现接口的统一呢,ApplicationContext就也实现了一系列的BeanFactory接口。
ApplicationContext是建立在BeanFactory的基础之上的,以所有对配置对象的管理最终还是得交负给一个DefaultListableBeanFactory来完成的,而ApplicationContext就在应用这个DefaultListableBeanFactory对象的基础上,既实现了BeanFactory接口提供的一些功能方法,又组合了一些面向应用的功能,并且将一些原先需要手动设置到BeanFactory的属性通过配置文件中配置的形式代替,因为对于BeanDefinition和bean对象的管理来说是由上下文持有的beanfactory对象来完成的,用户就不需要拥有这样的接口了,所以,ApplicationContext的接口体系是并没有BeanDefinitionRegistry,SingletonBeanRegistry以及AutowireCapableBeanFactory接口的。
好了,以上就是本篇文章的全部内容了,还想了解更多java架构师信息,记得多多关注本站信息获取哦。
推荐阅读: