SpringBoot

如何理解Springboot

启动run()的过程

注解都用哪些

AOP底层原理

讲讲Springboot的启动流程

主要包括一下步骤:

  • 加载Springboot启动类(通常是带有@SpringbootApplication)注解的类

  • 扫描启动类所在包以及子包,找到所有的@Component@Controller@Service@Repository等注解的类

  • 根据扫描到的类创建BeanDefinition对象,并加入BeanDefinitionRegistry

  • 对所有的BeanDefinition进行实例化,创建Bean对象

  • 调用所有实现了CommandLineRunnerApplicationRunner接口的Beanrun方法

  • 启动SpringBoot应用

说说Bean的生命周期

主要包括以下阶段:

  • 实例化:IOC根据Bean的定义创建Bean实例

  • 属性赋值:IOC将Bean的属性赋值

  • Aware接口回调:如果Bean实现了Aware接口,则IOC将回调Aware接口的方法

  • BeanPostProcessor前置处理:如果Bean实现了BeanPostProcessor接口,则IOC将调用BeanPostProcessor的postProcessBeforeInitialization方法

  • 初始化:IOC调用Bean的初始化方法,如果Bean实现了InitializingBean接口,则调用afterPropertiesSet方法;如果在配置文件中定义了init-method,则调用配置的初始化方法。

  • BeanPostProcessor后置处理:如果Bean实现了BeanPostProcessor接口,则IOC将调用BeanPostProcessor的postProcessAfterInitialization方法

  • 使用:Bean可以被应用程序使用

  • 销毁:如果Bean实现了DisposableBean接口,则在容器关闭时,IOC将调用destroy方法;如果在配置文件中定义了destroy-method,则调用配置的销毁方法。

Last updated