1.spring框架是一个分层架构,它包含一系列的功能要素,并被分为大约20个模块。

这些模块被总结为以下几个部分。

(1)Core Container

Core Container(核心容器)包含有Core、Beans、Context和Expression Language模块。

Core和Beans模块是框架的基础部分,提供IOC(控制反转)和依赖注入特性。这里的基础概念是BeanFactory,它提供了Factory模式的经典实现来消除对程序性单例模式的需要,并真正的允许你从程序逻辑中分离出依赖关系和配置。

Core模块主要包含spring框架基本的核心工具类,spring的其他组件都要使用到这个包里的类,core模块是其他组件的基本核心。当然你也可以在自己的应用系统中使用这些工具类

Beans模块是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control/ Dependency Injection操作相关的所有类。

Context模块构建于Core和Beans模块基础之上,提供了一种类似于JNDI注册器的框架式的对象访问方法。Context模块继承了Beans的特性,为了spring核心提供了大量扩展,添加了对国际化、时间传播、资源加载个对Context的透明创建的支持。ApplicationContext接口是Context模块的关键。

Expression Language模块提供了一个强大的表达式语言用于在运行时查询和操纵对象。该语言支持设置/获取属性的值,属性的分配,方法的调用,访问数组上下文、容器和索引器、逻辑和算术运算符以及从spring的IOC容器中根据名称检索对象。

(2) Data Access/Integration

Data Access/Integration层包含有JDBC、ORM、OXM、JMS和Transaction模块。

JDBC模块提供了一个JDBC抽象层,它可以消除冗长的JDBC编码和解析数据库厂商特有的错误代码。这个模块包含了spring对JDBC数据访问进行封装的所有类。

ORM:利用ORM封装包,可以混合使用所有Spring提供的特性进行O/R映射。

    OXM:提供了一个对Object/XMl映射实现的抽象层。

JMS:提供了一些制造和消费消息的特性。

Transaction:支持编程和生命性的事务管理,这些事务类必须实现特定的接口,并且对所有的POJO都适用。

接下来开始分析这行代码spring做了哪些事情

BeanFactory  bf = new XmlBeanFactory(new ClassPathResource("beanFactoryTest.xml"))

  首先来分析它的运行时序,第一步:new ClassPathResource(“bean.....”)

在java中,将不同来源的资源抽象成URL,通过注册不同的handler来处理不同来源的资源的读取逻辑,一般handler的类型使用不同前缀来识别,如“file:”、“http:”、“jar:”等,然而URL没有默认定义相对ClassPath或servletContext等资源的handler。因而spring对其内部使用到的资源实现了自己的抽象结构:Resource接口来封装底层资源。

首先,它定义了3个判断当前资源状态的方法:存在性(exists)、可读性(isReadable)、是否处于打开状态(isOpen)。另外,Resource接口还提供了不同资源到URL、URI、File类型的转换,以及获取lastModified属性、文件名,resouce还提供了基于当前资源创建一个相对资源的方法:CreateRelative()。在错误处理中需要详细的打印出错的资源文件,因而Resource还提供了getDescription()方法用于在错误处理中打印信息。

转载于:https://www.cnblogs.com/woniufei/p/9642361.html

spring的整体架构分析一相关推荐

  1. Spring 源码分析(三) —— AOP(二)Spring AOP 整体架构

    2019独角兽企业重金招聘Python工程师标准>>> Spring AOP 架构         先是生成代理对象,然后是拦截器的作用,最后是编织的具体实现.这是AOP实现的三个步 ...

  2. MyBatis源码分析(一)MyBatis整体架构分析

    文章目录 系列文章索引 一.为什么要用MyBatis 1.原始JDBC的痛点 2.Hibernate 和 JPA 3.MyBatis的特点 4.MyBatis整体架构 5.MyBatis主要组件及其相 ...

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

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

  4. 1.1 Spring的整体架构--Spring源码深度解析

    前言: Spring 始于2003年,轻量级 Java 开源框架. Spring 是为了解决企业应用开发的复杂性而创建的,它使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情. Sp ...

  5. 【架构模式】程序整体架构分析

    Title: 程序整体架构分析 Date: 2020-9-18 Tags: 架构 设计模式 程序整体架构分析 在做软件架构设计时,根据不同的抽象层次可分为三种不同层次的模式: 架构模式(Archite ...

  6. Spring Boot 前世今生和整体架构分析

    依托于Servlet的Spring Boot spring boot是目前java微服务广泛使用的Web框架,本身内部的核心模块是嵌入的tomcat和spring mvc. spring mvc设计上 ...

  7. MapReduce整体架构分析

    继前段时间分析Redis源代码一段时间之后.我即将開始接下来的一段技术学习的征程.研究的技术就是当前很火热的Hadoop,可是一个Hadoop生态圈是很庞大的.所以首先我的打算是挑选当中的一部分模块, ...

  8. OWT Server 整体架构分析

    基础模块架构图 按自己的理解用 visio 大体画了一下. 前一篇博客讲过OWT Server是模块化的设计,不同模块可以分开部署,便于新手入门,下面画了OWT Server的一些基础模块(支持Web ...

  9. 一步步去阅读koa源码,整体架构分析

    阅读好的框架的源码有很多好处,从大神的视角去理解整个框架的设计思想.大到架构设计,小到可取的命名风格,还有设计模式.实现某类功能使用到的数据结构和算法等等. 使用koa 其实某个框架阅读源码的时候,首 ...

最新文章

  1. Swift中编写单例的正确方式
  2. Day4--Scrapy基本使用
  3. 比较MongoDB在公有云上的性能:AWS、Azure和Digital Ocean
  4. TCP连接过程:三次握手与四次握手—Vecloud微云
  5. mysql数据迁移数据一致性检教6_如何在数据库迁移中保证数据一致性?
  6. 开源项目SlidingMenu的使用(Android)
  7. 【PHP学习】—数组的定义和遍历(三)
  8. php http agent,PHP通过http头user-agent判断是否为手机浏览器
  9. android 文件转base64 base64字符串转文件 语音留言及语音播放
  10. 网络安全管理规章制度
  11. 【opencv-ml】支持向量机简介
  12. 【Unity实战100例】文件压缩Zip和ZIP文件的解压
  13. 驼峰命名法【规约与实践】
  14. 搜索引擎,你真的会用吗?
  15. 分享我的公众号留言功能迁移成功的故事
  16. Qt设计师如何添加QToolBar工具栏
  17. oracle中如何执行存储过程,Oracle如何执行存储过程
  18. 请教各位大佬 京东提网页cookie方法
  19. SAP TECHED2009 之 BusinessObjects的一些情况(多图)
  20. python上传文件到onedrive_PyOne——另一款支持OneDrive目录浏览的程序

热门文章

  1. 简单理解JSONP的定义及其实现
  2. Fragment容器Activity
  3. IOS推送消息怎么实现icon图标的数字累加
  4. ×××保障再上层楼:侠诺×××备援实例
  5. note同步不及时 one_Win10上OneNote 2016同步老出问题?解决方法送上
  6. linux常用指令_Linux常用指令
  7. python里的π怎么调用_用python计算圆周率π
  8. python3 解析html_Python3解析html高级操作
  9. devc++鼠标变成了光标_游戏鼠标选购避坑指南 教你如何轻松选择适合自己的鼠标...
  10. java 秒表时间格式化_java方法计时器,懒汉式,转换为00:00:00格式