1. Core Container:核心容器(core、Beans、Context、Expression Language

 
  • Core、Beans框架基础构成,提供IOC、依赖注入特性。BeanFactory
  • Core:核心工具类包。
  • Beans:包含访问配置文件,创建管理bean及进行IOC,DI操作所需要的类。
  • Context:构建于Core及Beans之上,提供类似JNDI注册器框架式对象访问方法,Context集成Beans特性并提供大量扩展,国际化、
  • 事件传播、资源加载等。支持J2EE特性(EJB、JMX、远程处理。ApplicatoinContext是Context的关键。
  • Expression Language:运行时查询,操纵对象的表达式语言。
 
2. Data Access/Integration:JDBC、ORM、OXM、JMS、TRNSACTION
 
  • JDBC:Spring对JDBC数据访问的所有封装。
  • ORM:关系对象映射,JPA、JDO、Hibernate、Ibatis
  • OXM:提供Object/XML映射实现的抽象层。
  • JMX:消息制造和消费。
  • Transaction:编程和声明性事务管理,实现特定的接口,并支持所有的pojo。
 
3. WEB
 
  • WEB模块建立与应用上下文之上,为基于web的应用提供上下文
  • Web模块:提供基础的面向Web的集成特性,
  • Web-Servlet:Spring的MVC实现,
  • Web-Struts:对Struts支持
  • Web-Porlet:
 
4. AOP:面向切面的编程。
 
结构组成
 
  • 核心类介绍
 
    DefaultListableBeanFactory:bean加载核心部分。扩展类:XmlBeanFactory,自定义xml读取XmlBeanDefinitionReader,
 
    XmlBeanDefinitionReader:Xml读取。
 

ResourceLoader:资源加载器,加载制定路径文件并返回Resource

BeanDefinitionReader:资源文件读取,并转换为BeanDefinition的个性功能

EnvironmentCapable:定义获取Environment的方法。

DocumentLoader:加载资源文件并转换为Document

BeanDefiinitionDocumentReader:读取Document并注册BeanDefinition

            BeanDefinitionParserDelegate:读取Element
 
  • 配置文件读取过程步骤:
 
    通过继承自AbstractBeanDefinitionReader的方法,通过ResourceLoader将资源文件转换为对应的Resource文件。
 
    通过DoucmentReader对Resource文件进行转换,转换为Doucment文件
 
    通过实现接口BeanDefinitionDocumentReader的DefaultBeanDefinitionDocumentReader类对Document进行解析,并使用 
     BeanDefinitionParserDelegate对Element进行读取。
 
  • 容器基础:XmlBeanFactory
            在java中将不同的资源抽象成URL,通过注册不同的URL Handler(URLStreamHandler),格式 协议:Protocal           
 
            配置文件封装:Resource接口
InputStreamSource封装任何返回InputStream的类,方法,getInputStream(),返回一个新的对象。
 
            当前资源状态判断,exists,isReadable,isOpen,提供对不同资源到URL,URI,FILE的转换,以及获取文件相应属性,创建
            相对资源(createRelative()),打印错误信息(getDescription()).
             
             对于不同来源的资源文件,设置形影的Resource实现 :
 
             文件系统:FileSystemResource
 
             Classpath资源:ClassPathResource
 
             URL资源:UrlResource
 
             InputStream资源:InputStreamResource
 
             Byte数组:ByteResource

Spring 整体架构的更多相关文章

  1. Spring整体架构

    Spring整体架构 Spring的整体架构 Spring框架是分层架构的,它包含了一系列的功能要素. Spring整体架构图 模块分类 1. Core Container Core Containe ...

  2. 【Spring源码深度解析系列 】Spring整体架构

    一.Spring的整体架构和模块 二.模块分类: 1.Core Container Core Container包含有Core .Beans.Context.和Expression  Language ...

  3. spring源码学习——spring整体架构和设计理念

    Spring是在Rod Johnson的<Expert One-On-One J2EE Development and Design >的基础上衍生而来的.主要目的是通过使用基本的java ...

  4. (转) Spring源码阅读 之 Spring整体架构

    标签(空格分隔): Spring 声明:本文系转载,原地地址:spring framework 4 源码阅读 Spring骨架 Spring的骨架,也是Spring的核心包.主要包含三个内容 cont ...

  5. 第一章 Spring整体架构和环境搭建(待续)

    ········

  6. Spring技术内幕:设计理念和整体架构概述(转)

    程序员都很崇拜技术大神,很大一部分是因为他们发现和解决问题的能力,特别是线上出现紧急问题时,总是能够快速定位和解决. 一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断 ...

  7. Spring Framework(框架)整体架构 变迁

    Spring Framework(框架)整体架构 2018年04月24日 11:16:41 阅读数:1444 标签: Spring框架架构 更多 个人分类: Spring框架   版权声明:本文为博主 ...

  8. spring源码深度解析—Spring的整体架构和环境搭建

    概述 Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用.Spring是于2003 年兴起的一个轻量级的Java 开发框 ...

  9. Spring的整体架构的认识

    Spring的整体架构的认识 一).spring是用来做什么的? spirng使用基本的JavaBean来完成以前EJB所完成的事. 二).EJB EJB: Enterprise JavaBean, ...

随机推荐

  1. PHP中用GD绘制饼图

    PHP中用GD绘制饼图,绘制的类见代码: Class Chart{ private $image; // 定义图像 private $title; // 定义标题 private $ydata; // ...

  2. 如何改变 FMX ListView 颜色

    需求:改变 ListView 颜色 适用:Firemonkey 任何平台 操作:Style 是改变控件外观最便捷的途径,ListView 也不例外,下面示范使用 StyleBook 来设定 ListV ...

  3. Rest.Ler PHP API Server解决方案

    https://github.com/Luracast/Restler 通过composer安装依赖后,整个vendor将近三十兆.这太不爽了.搞PHP的人如果没有洁癖的追求,跟搞Java的咸鱼有神码 ...

  4. 动态加载HTML后使用query修改标签样式

    下面的IMG 标签的宽度从后台返回是10PX,加载完毕后,修改成100PX,注意:拼接的代码在 body标签之后,或则直接在HTML外面增加也可以 <html> <head> ...

  5. 减小服务器负担,Apache启用mod_expires模块

    mod_expires可以减少10%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求. 在使用之前,首先要确认一下”mod_expires”模组是否有启用.如 ...

  6. spring的使用《一》

    在前边的文章中说明了,如何搭建一个spring的开发环境,简单回顾下就是把spring的jar包导入工程中,如果是在javaWeb项目中是放在lib目录下,然后在web.xml文件中进行配置,配置sp ...

  7. MySQL 运行环境建议规范

    一.操作系统环境 操作系统版本选择 CentOS/RHRL/ORACLE Linux 5.x/6.x x86_64 发行版 建议磁盘分区规则 MySQL 运行环境建议规范 挂载点 大小 分区类型 分区 ...

  8. [Android] WebView内的本地网页,使用XMLHttpRequest读取本地档案

    [Android] WebView内的本地网页,使用XMLHttpRequest读取本地档案 问题情景 在Android里,可以使用WebView来呈现本地或是远程的网页内容.但是在显示本地网页时,如 ...

  9. Aurelia – 模块化,简单,可测试的 JS 框架

    Aurelia 是下一代 JavaScript 客户端框架,利用简单的约定来激发你的创造力.凭借其强大的专注于开发经验, Aurelia 可以使您不仅创造惊人的应用程序,同时也享受这个过程.它经过精心 ...

  10. Titanium中调用ios组件时语言不是本地化的解决方法

    用Titanium开发的ios应用中,当调用系统组件时,尽管手机已经设置了系统语言为中文,但那些组件的界面却仍为英文.比如调用iphone中的相册组件,其界面为: 那么怎么让它跟系统语言保持一致呢? ...