Spring源码解析之零 ------ 容器初始化过程(refresh()方法)概要

本文深入解析Spring容器初始化的核心方法refresh(),包括prepareRefresh()、obtainFreshBeanFactory()和finishBeanInitialization()。这些步骤涉及bean的解析注册、bean实例化以及非懒加载bean的初始化。理解这一过程对于掌握Spring IOC和AOP至关重要。
摘要由CSDN通过智能技术生成

Spring的核心功能就是IOC和AOP。

IOC分两个过程:bean的解析注册 和 bean的实例化。

AOP是面向切面编程,但是它也离不开bean的解析注册。

本篇主要讲解,容器初始化时候的refresh()方法里的,几个重要方法的基本作用。

首先来看一下refresh()方法。spring容器的启动,创建bean,bean的初始化等一系列过程都在这个refresh方法里面,进行调用。接下来,对每个方法的作用做一个简要的说明。

	public void refresh() throws BeansException, IllegalStateException {
		synchronized (this.startupShutdownMonitor) {
			// Prepare this context for refreshing.
			prepareRefresh();

			// Tell the subclass to refresh the internal bean factory.
			ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();//bean的解析注册

			// Prepare the bean factory for use in this context.
			prepareBeanFactory(beanFactory);

			try {
				// Allows post-processing of the bean factory in context subclasses.
				postProcessBeanFactory(beanFactory);

				// Invoke factory processors registered as beans in the context.
				invokeBeanFactoryPostProcessors(beanFactory);

				// Register bean processors that intercept bean creation.
				registerBeanPostProcessors(beanFactory);

				// Initialize message source for this context.
				initMessageSource();

				// Initialize event multicaster for this context.
				initApplicationEventMulticaster();

				// Initialize other special beans in specific context subclasses.
				onRefresh();

				// Check for listener beans and register them.
				registerListeners();

				// Instantiate all remaining (non-lazy-init) singletons.
				finishBeanFactoryInitialization(beanFactory);//初始化非懒加载的bean

				// Last step: publish correspondi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值