Spring Boot核心架构

Spring Bean生命周期:

1. 实例化Bean

对于一个BeanFactory容器,当客户像容器请求一个尚未初始化的bean时,或初始化bean的时候需要注入另一个尚未初始化的依赖时,容器就会调用createBean进行实例化,对于ApplicationContext容器,当容器启动结束后,通过获取BeanDefinition对象中的信息,实例化所有的Bean。

2. 依赖注入

不同bean的依赖相互注入

3. 处理Aware接口

Spring会检查实例对象是否实现了XXAware接口,并将相关的XXAware实例注入到bean.

如果这个bean已经实现了ApplicationContextAware 接口,spring容器就会调用我们的bean的setApplicationContext(ApplicationContext)方法,传入Spring上下文,把容器自己传给这个bean。

4. BeanPostProcessor

如果想在bean 实例好之前,想对bean进行一些自定义的处理,此时可以让bean实现 BeanPostProcessor 接口,并调用 postProcessBeforeInitialization 方法;实例好之后,还可以调用postProcessAfterInitialization方法,进行初始化以后的处理,一般应用于内存或缓存技术。

5. InitializingBean 与 init-method

如果bean在spring配置文件配置了 init-method  属性,则将自动调用其配置进行初始化

6.  DisposableBean

当Bean不在需要时,会经过清理阶段,如果bean实现了 DisposableBean 这个接口,会调用其实现的destroy()方法。

7. destroy-method

如果进行了配置,会自动调用其配置的销毁方法。

 

核心技术流程图如下: