1Spring源码学习~Spring 介绍

Posted 戴泽supp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1Spring源码学习~Spring 介绍相关的知识,希望对你有一定的参考价值。

Spring 介绍

一、前言

Spring 是于 2003 年兴起的一个轻量级 Java 开源框架,由 Rod Johnson 在其著作 Expert One-On-One J2EE Design and Development 中阑述的部分理念和原型衍生而来。Spring 是为了解决企业应用开发的复杂性而创建的,它使用基本的 JavaBean 来完成以前只可能 由 EJB 完成的事情。

二、Spring 整体架构

Spring 框架是一个分层架构,它包含一系列的功能要素,如图所示

1、Core Container

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

Core 和 Beans 提供 Ioc(控制反转)和 DI(依赖注入)特性。

  • 1)、Core 模块主要包含 Spring 框架基本的核心工具类,是其他组件的基本核心和底层依赖
  • 2)、Beans 模块是所有应用都要用到的,它包含访问配置文件、创建和管理 bean 以及进行 Inversion of Control / Dependency Injection(Ioc/DI)操作相关的类
  • 3)、Context 模块构建于 Core 和 Beans 模块之上,提供了一种类似于 JNDI 注册器的框架式对象访问方法。Context 模块继承了 Beans 的特性,为 Spring 提供了大量扩展(如国际化,事件传播,资源加载等),ApplicationContext 是其中关键
  • 4)、Expression Language 模块提供强大的表达式语言,用于运行时查询和操作对象。它是 JSP 2.1 规范中定义的 unified expression language(统一表达语言) 的扩展。该语言支持设置/获取属性的值,属性的分配,方法的调用,访问数组上下文(accessiong the context of arrays),容器和索引器以及从 Spring 的 Ioc 容器中根据名称检索对象等。

2、Data Access / Integration

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

  • 1)、JDBC 模块提供了一个 JDBC 抽象层,它可以消除冗长的 JDBC 编码和解析数据库厂商特有的相关代码。它是 Spring 对 JDBC 数据访问的封装。
  • 2)、ORM 模块为对象-关系映射 API,如 JPA、JDO、Hibernate、iBatis 等,提供了一个交互层。利用此封装包,可以混合使用 Spring 提供的特性进行 O/R 映射(如声明式事务)
  • 3)、OXM 模块提供了一个对 Object/XML 映射实现的抽象层,Object/XML 映射实现包括 JAXB、Castor、XmlBeans、JiBX 和 XStream。
  • 4)、JMS(Java Messaging Service)模块主要包含了一些制造和消费消息的特性。
  • 5)、Transaction 模块支持变成和声明式事务管理。

3、Web

Web 模块为基于 Web 的应用程序提供了上下文。Web 模块简化了处理大部分请求以及将请求参数绑定到域对象的工作。Web 层包含了 Web、Web-Servlet、Web-Structs 和 Web-portlet模块。

  • 1)、 Web 模块提供了面向 Web 的集成特性。如:多文件上传、使用 servlet listeners 初始化 Ioc 容器以及面向 Web 的应用上下文。
  • 2)、Web-Servlet 模块包含 Spring 的 model-view-controller(MVC) 实现。
  • 3)、Web-Structs 模块提供了对 Structs 的支持。注意,该支持在 Spring 3.0 中已被弃用。
  • 4)、Web-portlet 模块提供了用于 Portlet 环境和 Web-servlet 模块的 MVC 的实现

4、AOP

AOP 模块提供了一个符合 AOP 联盟标准的面向切面编程的实现。Spring AOP 模块为基于 Spring 的应用程序,很方便地提供了事务管理服务。

  • Aspects 模块提供了对 AspectJ 的集成支持。
  • Instrumentation 模块提供了 class Instrumentation 支持和 classloader 实现。

5、Test

Test 模块支持使用 Junit 和 TestNG 对 Spring 组件进行测试。

三、环境搭建

1、获取 Spring 源码

github 上下载源码:https://github.com/spring-projects/spring-framework

idea 导入打开后切换到 5.3.x 分支

以上是关于1Spring源码学习~Spring 介绍的主要内容,如果未能解决你的问题,请参考以下文章

Spring学习

JavaSSM框架简介

1spring-boot学习笔记简单入门

spring动态切换数据源

Spring Ioc源码深入剖析预备知识

spring