
Spring 容器和 Bean 的创建过程是 Spring 框架的核心机制,以下是其关键流程的详细说明:
Spring 容器(如 ApplicationContext)的创建主要分为以下步骤:
ClassPathXmlApplicationContext 加载 applicationContext.xml。AnnotationConfigApplicationContext 扫描 @ComponentScan 指定的包。BeanDefinitionReader 读取配置,解析为 BeanDefinition 对象(Bean 的元数据)。BeanDefinition 存入 BeanDefinitionRegistry(如 DefaultListableBeanFactory)。BeanFactoryPostProcessor(如 PropertySourcesPlaceholderConfigurer)修改 Bean 定义。DefaultListableBeanFactory 作为 Bean 工厂。BeanFactoryPostProcessor.postProcessBeanFactory() 方法(例如解析占位符 ${})。ApplicationContextAwareProcessor 等内置组件,用于处理 Aware 接口回调。当调用 getBean() 或容器初始化时,Bean 的创建流程如下:
@Autowired、@Resource 等注解注入依赖。singletonFactories、earlySingletonObjects)提前暴露未初始化的 Bean。BeanNameAware、BeanFactoryAware、ApplicationContextAware 等接口方法。BeanPostProcessor.postProcessBeforeInitialization()(例如 @PostConstruct 处理)。InitializingBean.afterPropertiesSet() 或 @Bean(initMethod="...") 指定的方法。BeanPostProcessor.postProcessAfterInitialization()(例如 AOP 代理在此阶段生成)。singletonObjects),后续可通过容器获取。@PreDestroy、DisposableBean.destroy() 或自定义销毁方法。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。