Spring启动流程
1.加载配置文件
主要就是读取xml配置文件以及注解配置类
2.创建应用上下文ApplicationContext
核心容器,负责管理和维护bean
3.扫描并注册bean定义
Spring 会扫描指定包路径下的类,识别带有
@Component、@Service、@Repository、@Controller 等注解的类,并注册这些类的 Bean 定义。
4.实例化和注入依赖
Spring 容器会实例化被注册的 Bean。
然后通过构造器,setter方法,字段注入依赖
5.处理bean的生命周期初始化方法
InitializingBean接口的afterPropertiesSet
@PostConstruct修饰的init方法
6.处理BeanPostProcessors
在Bean初始化前和初始化后进行一些自定义的处理
7.发布事件
spring在启动过程中会发布一些事件,比如容器启动事件
8.完成启动
当所有的bean完成初始化之后,spring就启动完成
BeanDefinition:每个bean在spring中都会对应应该BeanDefinition,
其中包含了Bean的元数据信息,例如类名,依赖关系等
spring会根据BeanDefinition创建和管理bean