• 死磕Spring源码系列


    一、Spring总体架构

    1.架构图

    2.SpringIOC:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

    3.SpringAOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。

    4.SpringMVC:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

    5.SpringJDBC:

    6.SpringORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

    7.Spring远端调用:

    8.Spring事务管理:

    9.Spring应用:最顶层应用,面向应用开发者。

    10.Spring上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。

    二、SpringIOC容器

    1.BeanFactory家族

    1.1 BeanFactory

    可访问spring容器的根接口,是bean容器的最基本的形态,这个接口是由包含许多bean定义的对象实现的,*每一个都由字符串名唯一标识。

    根据bean的定义,*工厂将返回所包含对象的独立实例。

    1.2 HierarchicalBeanFactory

    可分级的BeanFactory,允许将父类设置为可配置的。

    1.3 ApplicationContext

    应用程序上下文,应用程序提供配置的核心接口。

    1.4 WebApplicationContext

    web应用程序提供配置的接口,getServletContext()方法获取全局应用程序共享对象(ServletContext上下文)。

    1.5 ConfigurableWebApplicationContext

    可配置的web应用程序上下文实现的接口,是WebApplicationContext接口的强化版

    1.6 AbstractRefreshableWebApplicationContext

    AbstractRefreshableWebApplicationContext抽象类中并没有太多的操作,更多的是一些get和set操作

    1.7 XmlWebApplicationContext

    web环境下spring容器的最高级形态。

    2. IOC容器的初始化

    2.1 Resource定位

      2.1.1 DefaultListableBeanFactory的子类XmlBeanFactory,配置了特定的读取器XmlBeanDefinitionReader

      2.1.2 AnnotationConfigWebApplicationContext在方法loadBeanDefinitions中配置了特定的读取器AnnotatedBeanDefinitionReader

      2.2.3 FileSystemXmlApplicationContext类,getResourceByPath方法根据资源路径定位资源。

      2.2.4 XmlWebApplicationContext类 通过构造方法定位资源。

    2.2 BeanDefinition的载入

      BeanDefinitionReader 定义了资源的获取和加载,其中XmlBeanDefinitionReader是他的子类。AbstractXmlApplicationContext类的定义了loadBeanDefinitions方法,

    通过XmlBeanDefinitionReader完成BeanDefinition的载入。具体的Spring的BeanDefinition的解析是在BeanDefinitionParserDelegate中完成的。解析完成后会把解析结果

    放到BeanDefinition对象中并设置到BeanDefinitionHolder。  

    2.3 向IOC容器注册BeanDefinition

     类DefaultListableBeanFactory实现BeanDefinitionRegistry接口完成BeanDefinition向容器的注册,简单的讲就是将之前解析到的BeanDefinition设置到hashMap中去。

    三、SpringAOP

  • 相关阅读:
    2013年工作中遇到的20个问题:81-100
    2013年工作中遇到的20个问题:81-100
    码农:客户是恶魔
    码农:客户是恶魔
    C# DataGridView 使用
    Java实现 LeetCode 203 移除链表元素
    Java实现 LeetCode 203 移除链表元素
    Java实现 LeetCode 202 快乐数
    Java实现 LeetCode 202 快乐数
    Java实现 LeetCode 202 快乐数
  • 原文地址:https://www.cnblogs.com/liandy001/p/11223654.html
Copyright © 2020-2023  润新知