💡
原文英文,约300词,阅读约需1分钟。
📝
内容提要
在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和事务管理。
➡️