`

Spring3.0源码学习---IOC(二)

阅读更多

     容器主要初始化的入口是wac.refresh() 这里同样是使用了模板模式, 真正refresh()的实现是在AbstractApplicationContext 这个抽象类中实现的:

 

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();

			// 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);

				// Last step: publish corresponding event.
				finishRefresh();
			}

			catch (BeansException ex) {
				// Destroy already created singletons to avoid dangling resources.
				destroyBeans();

				// Reset 'active' flag.
				cancelRefresh(ex);

				// Propagate exception to caller.
				throw ex;
			}
		}
	}

 最主要是ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

/**
	 * Tell the subclass to refresh the internal bean factory.
	 * @return the fresh BeanFactory instance
	 * @see #refreshBeanFactory()
	 * @see #getBeanFactory()
	 */
	protected ConfigurableListableBeanFactory obtainFreshBeanFactory() {
		//refreshBeanFactory这个方法在这里没有实现,由起子类AbstractRefreshableApplicationContext,
		//GenericApplicationContext来实现(模板模式)
		refreshBeanFactory();
		ConfigurableListableBeanFactory beanFactory = getBeanFactory();
		if (logger.isDebugEnabled()) {
			logger.debug("Bean factory for " + getDisplayName() + ": " + beanFactory);
		}
		return beanFactory;
	}

 AbstractRefreshableApplicationContext中的refreshBeanFactory()方法.

 

 

分享到:
评论

相关推荐

    Spring3.0 chmAPI 和 Spring3.0所有jar 和 Spring3.0源码

    **Spring3.0源码** 源码可以帮助开发者深入理解Spring的工作原理,学习最佳实践,并根据需要进行定制。源码包含了Spring框架的所有模块,包括IoC(控制反转)容器、AOP代理、事件处理、MVC框架等。通过阅读源码,...

    spring3.0 源码

    本文将深入探讨Spring 3.0源码,揭示其核心设计理念和实现机制,帮助开发者更好地理解和应用这个强大的框架。 一、IoC(Inversion of Control)容器 Spring的核心是IoC容器,它负责管理对象的生命周期和依赖关系。...

    Spring 3.0就这么简单源码Maven的jar包001

    Spring 3.0是Spring框架的一个...结合Maven的使用,开发者不仅可以快速构建项目,还能通过源码学习到框架的精髓,提升自己的技能水平。对于想要深入理解Spring框架的人来说,阅读和研究这些源码无疑是一条有效的途径。

    spring 3.0 src

    通过对Spring 3.0源码的深入学习,开发者可以更好地理解其内部工作原理,优化自己的代码,解决实际问题,并为升级到更高版本或理解Spring框架后续发展打下坚实基础。通过分析源码,我们可以了解到设计模式的应用,如...

    Spring3.0就这么简单源码

    《Spring3.0就这么简单》是一本专注于Spring框架3.0版本的图书,其源代码提供了深入理解Spring工作原理的机会。这本书旨在简化Spring框架的学习过程,通过实例和源码解析,帮助读者快速掌握Spring的核心概念和技术。...

    spring-frameword3.0源码

    《Spring框架3.0源码解析》 Spring框架作为Java领域中最广泛应用的轻量级框架,其3.0版本在设计模式、模块化和性能优化上都有显著提升。本资料集合了Spring框架3.0的核心源码,为开发者提供了一个深入了解Spring...

    spring3.0jar包及源码

    在学习Spring 3.0源码时,可以重点关注以下几个方面: - BeanFactory和ApplicationContext接口的实现,了解bean的创建、初始化和依赖注入过程。 - AOP的实现,如Pointcut、Advisor、Proxy等类的交互。 - MVC的...

    spring3.0学习

    此外,Spring的事件驱动模型和资源管理也是源码学习的重点。 至于工具应用,Spring 3.0与各种工具的整合是提升开发效率的关键。例如,与Maven或Gradle的集成,简化了项目的构建过程;Eclipse和IntelliJ IDEA的...

    spring3.0就是这么简单代码

    《Spring 3.0 就是这么简单》是一本针对初学者和中级开发者的书籍,由陈雄华和林开雄合著。...书中涵盖的内容全面,从基本概念到实战技巧,为读者提供了一个扎实的学习平台,使Spring 3.0变得“就这么简单”。

    javascript and Spring3.0下载地址

    在Spring 3.0中,IoC(Inversion of Control,控制反转)容器是核心,它负责管理对象的生命周期和依赖关系。另外,Spring AOP允许开发者定义“切面”,实现代码的解耦。Spring MVC是Spring框架的一部分,它提供了一...

    spring-framework-3.2.x源码

    3. **IoC容器**:Spring IoC容器是Spring的核心,负责管理对象的生命周期和装配。它可以是BeanFactory或ApplicationContext,前者是基本实现,后者提供更多的企业级功能。 4. **数据访问集成**:Spring支持多种数据...

    Spring3.0.2-Source源码

    总的来说,Spring 3.0.2源码的学习是一次宝贵的编程之旅,它揭示了这个强大框架背后的设计思想和实现细节,对于提升Java企业级开发能力具有重要意义。通过阅读和理解源码,开发者能够更好地利用Spring解决实际问题,...

    spring 源码

    通过分析Spring 3.0源码,我们可以深入了解IoC容器的工作流程、AOP的实现机制以及如何与各种数据访问技术集成。理解这些关键点将有助于你更好地利用Spring框架,编写出更加高效、可维护的代码。在学习源码的过程中,...

    《Spring IOC核心技术》- 冰河原创电子书

    《Spring IOC核心技术》是冰河原创的一本专注于Spring IOC核心概念和技术的电子书。Spring作为Java开发领域的重要框架,它的依赖注入(IOC)机制是其核心功能之一,它极大地简化了对象之间的耦合,提高了代码的灵活...

    springboot 3.0.2 自动配置(auto-configuration) 启动器(starter)保姆级教程带源码

    Spring Boot 3.0.2 自动配置(auto-configuration)和启动器(starter)是其核心特性,旨在简化Spring应用程序的开发过程。本篇保姆级教程将带你深入...本教程提供的源码分析和示例将帮助你深入学习并实践这些知识。

Global site tag (gtag.js) - Google Analytics