【JAVA面试】Spring容器的启动流程

提示:文章先作为初版,等后续时间充足后,补充更深的内容


Spring容器的启动流程

一、流程

当启动Spring容器时,会按照以下步骤进行:

扫描并注册Bean定义:Spring容器会扫描指定的包或目录,查找带有特定注解(如@Component、@Service、@Repository等)的类。它会创建对应的BeanDefinition对象,包含了Bean的元数据信息,并将这些BeanDefinition对象存储在一个Map中。

预处理Bean定义:在注册Bean定义后,Spring容器会对Bean定义进行预处理操作。这包括合并父子类的BeanDefinition,解析属性占位符,处理自动装配等。

实例化非懒加载的单例Bean:Spring容器会遍历所有非懒加载的单例BeanDefinition,并根据BeanDefinition创建相应的Bean实例。这涉及到实例化Bean、属性填充和依赖注入等操作。

初始化Bean:在单例Bean实例化后,Spring容器会调用各个Bean的初始化方法。这可以包括自定义的初始化逻辑,如初始化数据库连接、加载配置文件等。还可以执行BeanPostProcessor的前置初始化方法。

注册BeanPostProcessor:Spring容器会注册实现了BeanPostProcessor接口的Bean后处理器。这些后处理器可以在Bean实例化和初始化的过程中对Bean进行增强,如AOP代理、属性填充等。注册后处理器之后,会执行BeanPostProcessor的后置初始化方法。

完成启动过程当所有非懒加载的单例Bean都被实例化、初始化完成后,Spring容器的启动过程结束。此时,可以发布容器启动事件,通知相关的监听器

二、注意事项

上述流程中的细节和执行顺序可能会因为Spring的版本和配置方式的不同而有所差异。在实际开发中,还可以通过扩展点如BeanFactoryPostProcessor、@Import注解等来定制和影响Spring容器的启动流程,满足特定的需求。


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值