内容提要
在Spring中,创建ApplicationContext时,首先解析配置类生成BeanDefinition并注册到BeanFactory。接着通过refresh()方法修改和初始化Bean,最后实例化Bean并注入依赖,存入单例缓存。
关键要点
-
在Spring中创建ApplicationContext时,首先解析配置类生成BeanDefinition并注册到BeanFactory。
-
BeanDefinition描述了每个bean的创建方式,包括类类型、作用域和依赖关系等。
-
使用ConfigurationClassPostProcessor等处理器扫描和解析注解。
-
refresh()方法是ApplicationContext的复杂生命周期方法,涉及多个关键步骤。
-
invokeBeanFactoryPostProcessors()用于修改或添加BeanDefinitions。
-
registerBeanPostProcessors()设置钩子以自定义bean创建。
-
finishBeanFactoryInitialization()触发单例bean的创建。
-
在调用getBean()或单例预实例化时,Spring会创建实例并注入依赖。
-
依赖注入可以通过字段、setter或构造函数进行。
-
初始化回调通过@PostConstruct或InitializingBean接口应用。
-
BeanPostProcessors允许增强或代理bean。
-
如果bean的作用域是单例,Spring会将实例缓存以供将来使用。
延伸问答
Spring中ApplicationContext创建Bean的第一步是什么?
第一步是解析配置类生成BeanDefinition并注册到BeanFactory。
BeanDefinition在Spring中有什么作用?
BeanDefinition描述了每个bean的创建方式,包括类类型、作用域和依赖关系等。
refresh()方法在ApplicationContext中有什么重要性?
refresh()方法是ApplicationContext的复杂生命周期方法,涉及多个关键步骤,如修改或添加BeanDefinitions。
Spring如何处理依赖注入?
依赖注入可以通过字段、setter或构造函数进行,使用注解如@Autowired和@Value。
Spring是如何存储单例Bean的?
如果bean的作用域是单例,Spring会将实例缓存以供将来使用。
BeanPostProcessors在Bean创建中起什么作用?
BeanPostProcessors允许增强或代理bean,常用于AOP和事务管理。