`
liwutao
  • 浏览: 27810 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring源码学习笔记

阅读更多

 最近在看spring的源码,担心忘掉了,打个记号,也请大家一起指正其中的错误,防止走歪路。

xml配置文件加载入手

xml配置文件加载由

org.springframework.context.support.ClassPathXmlApplicationContext完成,该类的继承关系如下:



 实际调用:

AbstractApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"beans.xml"});
		PersonService service = (PersonService)context.getBean("personService");

 

 Beans.xml加载在创建ClassPathXmlApplicationContext实例时完成,上面调用方法仅仅是ClassPathXmlApplicationContext构造函数之一。

  该构造函数调用具体内部步骤如下:

1.  创建PathMatchingResourcePatternResolver实例,该实例用于后续将文件路径解析为资源对象。

2.       处理参数中传入的路径数组:去掉每个路径的前后空格

3.       调用refresh()刷新实例容器(Context)refresh方法定义在ClassPathXmlApplicationContext的父类:AbstractApplicationContext.

   refresh()包括刷新前准备,获取bean工厂实例,bean工厂使用前配置,加载bean定义文件(这里是xml,但没有初始化bean实例),初始化bean实例,初始化消息资源,初始化事件处理器,初始化生命周期依赖的bean,附加的刷新,注册监听实例,完成beanFactory初始化,完成刷新。当然如果出现异常需要回滚刷新并删除所有的bean实例。

 

获取bean工厂实例:刷新工厂(刷新前准备、删除Context中所有的bean实例,关闭原beanFactory,

 重新获取beanFactory实例,自定义beanFactory实例配置(目前默认实现为空),加载bean配置文件)

  获取beanFactory:

   

DefaultListableBeanFactory beanFactory = createBeanFactory();
customizeBeanFactory(beanFactory);

加载bean定义的xml文件

protected void loadBeanDefinitions(DefaultListableBeanFactory beanFactory) throws IOException {
		// Create a new XmlBeanDefinitionReader for the given BeanFactory.
		XmlBeanDefinitionReader beanDefinitionReader = new XmlBeanDefinitionReader(beanFactory);

		// Configure the bean definition reader with this context's
		// resource loading environment.
		beanDefinitionReader.setResourceLoader(this);
		beanDefinitionReader.setEntityResolver(new ResourceEntityResolver(this));

		// Allow a subclass to provide custom initialization of the reader,
		// then proceed with actually loading the bean definitions.
		initBeanDefinitionReader(beanDefinitionReader);
		loadBeanDefinitions(beanDefinitionReader);
	}

 

 

  • 大小: 91.8 KB
分享到:
评论

相关推荐

    Spring学习笔记&源码

    本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...

    Spring高级源码学习笔记.zip

    总之,Spring源码学习是一个深化编程技能,理解设计模式,以及提高问题解决能力的过程。通过深入研究,程序员不仅可以优化自己的代码,还能更高效地利用Spring框架提供的功能,提升项目的可维护性和扩展性。

    马士兵老师spring框架学习笔记

    马士兵老师是知名的Java教育专家,他的Spring框架学习笔记深入浅出,对于初学者和进阶者来说都是一份宝贵的资源。这份笔记涵盖了Spring的核心概念、配置、AOP(面向切面编程)、DI(依赖注入)等关键知识点。 1. **...

    Spring学习笔记+学习源码.zip

    这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...

    Spring学习笔记(精华全记录)

    ### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...

    spring高级源码笔记.pdf

    学习Spring源码不仅可以深入理解其工作原理,还可以提升自己的编程技能和设计思维。通过阅读源码,开发者可以了解如何实现DI和AOP,以及Spring如何优雅地管理对象和处理各种框架的集成。对于初入IT行业的人员来说,...

    Java Spring框架学习笔记(内附源码).pdf

    本学习笔记提供了丰富的源码示例,帮助读者更好地理解和应用Spring框架。 首先,需要明确Spring是一个开源框架,它旨在简化Java EE(现在称为Jakarta EE)的开发。Spring框架的核心是提供了一个轻量级、解耦的容器...

    Spring 学习笔记《Spring Boot》源码

    在《Spring Boot》源码学习笔记中,我们可以深入理解其内部工作机制,包括自动配置、起步依赖、命令行接口(CLI)以及如何集成各种组件如JSP等。JSP(JavaServer Pages)是一种用于动态创建网页的技术,Spring Boot ...

    Spring学习笔记(马士兵spring视频笔记).doc

    Spring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).docSpring学习笔记(马士兵spring视频笔记).doc

    spring aop 学习笔记

    本学习笔记将深入探讨Spring AOP的核心概念、工作原理以及实际应用。 1. **核心概念** - **切面(Aspect)**:切面是关注点的模块化,包含业务逻辑之外的横切关注点,如日志、事务管理。 - **连接点(Join Point...

    SpringFramework5.0.x源码学习笔记.pdf

    这份源码学习笔记以SpringFramework 5.0.x版本为核心,详细地记录了通过debug方法学习Spring框架中的两个核心特性:控制反转(IoC)和面向切面编程(AOP)的实现原理。 首先,要学习Spring Framework 5.0.x的源码,...

    马士兵Spring课堂笔记(超级详细版).pdf

    马士兵Spring课堂笔记(超级详细版) 本资源主要讲解了Spring框架的基础概念和应用,涵盖了面向接口编程、IOC/DI、AOP、Spring应用IOC/DI、Spring应用AOP、Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合、Spring...

    spring学习源码笔记

    本笔记将深入探讨Spring的源码学习,重点理解其核心组件和生命周期。 首先,Spring通过反射机制来实例化对象。在Java中,我们可以使用`Class.forName()`方法根据完全限定类名获取类对象,或者通过已有对象的`...

    spring学习笔记,包括源码学习

    这个"spring学习笔记,包括源码学习"的资料很可能包含了一系列关于Spring框架的核心概念、配置、使用方法以及深入源码的解析。 首先,让我们来了解一下Spring框架的基础知识。Spring的核心特性是依赖注入,它允许...

    Spring笔记示例源代码

    "Spring笔记示例源代码"这个资源很可能是为了帮助学习者深入理解Spring框架的各种功能和用法而提供的实际代码示例。 1. **Spring IoC**:IoC是Spring的核心特性,它将对象的创建和管理权交给Spring容器,使得开发者...

    spring5源码分析笔记

    Spring框架是Java开发中最常用的轻量级开源框架之一,它为构建企业级应用程序...以上是Spring5源码分析笔记中的主要知识点,深入学习这些内容将有助于开发者更好地理解和利用Spring框架,从而提高开发效率和应用质量。

    Spring技术内幕 学习笔记

    《Spring技术内幕 学习笔记》是一份深入探讨Spring框架核心机制的学习资料,结合作者zzc1684在iteye博客上的博文,我们可以从中学习到Spring框架的多个重要知识点。Spring作为Java企业级应用开发的基石,其设计思想...

    SpringIOC+SpringMVC学习笔记

    个人学习spring框架时记录的笔记,纯手敲,SpringIOC+SpringMVC学习笔记,有兴趣的可以参考

    Spring AOP学习笔记

    NULL 博文链接:https://linres.iteye.com/blog/281221

    spring2.0学习笔记+spring定时任务

    标题 "spring2.0学习笔记+spring定时任务" 暗示了我们即将探讨的是关于Spring框架2.0版本的学习心得以及如何在Spring中配置和使用定时任务。在这个主题下,我们将深入理解Spring的核心概念,特别是它在企业级Java...

Global site tag (gtag.js) - Google Analytics