spring源码阅读(一)

spring的整体架构

架构图:

这些模块可以分为以下几个部分:

  • core container

core container 包括 core beans EL context
core 和 beans 模块是框架的基础部分,提供 IOC 控制反转 和依赖注入的特性。

  • core模块中包含spring框架的基本核心类,其他组件部分都要用到它。

  • beans模块是很多组件都要用到的,它包括访问配置文件。创建和管理bean 以及进行 IOC/DI的操作相关的类

  • context模块构建以core和beans模块之上,一个类似一个jndi(Java Naming and Directory Interface,Java命名和目录接口)注册器的框架式的对象访问方法。context继承了beans的特性提供了很多其他的拓展:国际化、事件传播、资源加载、对context透明创建的支持。context也支持一些javaEE的一些属性。EJB、JMX、基础的远程处理。ApplicationContext是Context模块的关键。

  • Expression Language 模块提供了一个强大的表达式语言用于运行时查询和操纵对象。它是jsp2.10规范的unifed Expression Language的一个扩展。该语言支持 设置、获取属性的值、属性的分配、方法的调用 、访问数组上下文、容器和索引器、逻辑和算术运算符、命名变量、已经从spring的IOC容器中根据名称检索对象、它也支持list投影、选择、和一般的list聚合。
  • Data Access/integration

该层包含 JDBC ORM OXM JMS Transactions


  • jdbc 模块包含一个jdbc 抽象层,可以消除冗长的jdbc编码、错误处理,该模块包含了对jdbc封装的所有类

  • ORM 为流行的orm框架 mybatis、hibernate、jpa 提供了一个交互层。

  • OXM 提供对object/xml映射的实现的抽象层。实现有:Xstream

  • JMS java消息服务 生产者-消费者

  • Transaction 事务管理
  • web

web上下文模块建立在应用程序上下文模块之上,为基于web的应用程序提供上下文。web模块还简化了参数绑定到域对象等工作。web层包括:Web、Web-servlet、web-struts、web-porlet模块


  • web模块:提供了基础的面向web的集成特性。 包括文件上传、Servlet listener来初始化IOC容器以及面向web的上下文。

  • web-servlet模块:包含了 spring的mvc的实现

  • web-struts模块: 对struts的支持 在spring 3.0 中以及过时

  • web-porlet模块:结合spring-servlet做spring mvc的
  • AOP

面向切面编程。


  • Aspects:对AspectJ集成的支持

  • instrumentation :提供class instrumentation 支持和classloader的实现。使得可以在特定的应用服务上使用。
  • Test

支持Junit 和 TestNG 组件进行测试。

原文地址:https://www.cnblogs.com/joeCqupt/p/6828228.html