Spring面试的几大问题

一、IOC容器初始化流程

1.IOC容器初始化的基本流程

Spring面试的几大问题_第1张图片

2.debug看源码上面的9个步骤

(1)接上篇文章,重点讲解this.refreshContext(context)

步入this.refreshContext(context),发现是下面方法,再步入this.refresh(context)。Spring面试的几大问题_第2张图片

发现了容器对象调用的刷新容器的方法。

然后再步入进去发现不是在原来的SpringApplication类了,而是在ServletWebServerApplicationContext类中。Spring面试的几大问题_第3张图片

我们应该怎么找对应的关系呢?直接搜索AnnotationConfigServletWebServerApplicationContext这个类,去看它的关系图,发现是继承关系。Spring面试的几大问题_第4张图片

然后再步入进去,就在AbstractApplicationContext类中。该方法里面的代码就是核心的刷新容器的代码了。继承关系看上一张图片。Spring面试的几大问题_第5张图片

(2)步入this.prepareBeanFactory(beanFactory)

Spring面试的几大问题_第6张图片

里面设置了ClassLoader。Spring面试的几大问题_第7张图片

设置了Environment。Spring面试的几大问题_第8张图片

(3)扫描要放入的bean

执行bean工厂的后置处理器,也就是扫描要放入的容器bean,得到对应的beanDefinition(描述bean的信息),并没有创建bean。

(4)注册BeanPostProcessors

该方法就是注册BeanPostProcessors。

执行后可以发现里面有了自己自定义的MyBeanPostProcessor。Spring面试的几大问题_第9张图片

(5)处理国际化

一般用不到,了解就行了。

(6)初始化事件多播器ApplicationEventMulticaster

它负责处理和广播应用程序级别的事件。

(7)启动tomcat

该方法的作用就是启动tomcat。

可以看到控制台输出的内容,就有tomcat的启动内容的输出。Spring面试的几大问题_第10张图片

(8)绑定事件监听器和事件多播器

这个方法的作用就是绑定事件监听器和事件多播器。

(9)实例化非懒加载的单例bean

这个就是核心的实例化bean的方法,在下一个更新的bean的生命周期重点讲解。

(10)完成刷新

也就是最后的扫尾工作,比如清空实例化时占用的缓存等等。Spring面试的几大问题_第11张图片

3.面试的时候怎么说呢?

借鉴黑马程序员的图片。Spring面试的几大问题_第12张图片

你可能感兴趣的:(spring,面试,java)