Spring6-2.Spring 概述

128 阅读4分钟

Spring 概述

Spring 简介

Spring 框架是一个开源的框架,由 Rod Johnson 创建,用于解决企业应用开发的复杂性而创建的。

Spring 是一个轻量级的控制反转(Ioc)和面向切面(AOP)的容器框架。

Spring 最初是为了解决 EJB 臃肿的设计以及难以测试等问题。

Spring 为简化开发而生,让程序员只需关注核心业务的实现,尽可能地不再关注非业务逻辑代码(这个特点是依靠 AOP 实现的)。

Spring 8大模块

spirng8大模块.png

  1. Spring Core 模块

    这是 Spring 框架最基础的部分,提供了 DI 特征来实现容器对 Bean 的管理。核心容器的主要组件是 BeanFactory,BeanFactory 是工厂模式的一个实现,是任何 Spring 应用的核心。

  2. Spring Context 模块

    如果说核心模块中的 BeanFactory 使 Spring 成为容器的话,那么这个模块就是让 Spring 成为框架的原因。

    这个模块扩展了 BeanFactory,增强了对国际化(I18N)消息、事件传播、验证的支持。另外提供了许多企业服务,例如电子邮件、JNDI 访问、EJB 集成、远程以及时序调度(scheduling)服务。也包括了对模版框架,例如 Velocity 和 FreeMarker 集成的支持。

  3. Spring AOP 模块

    Spring 在 AOP 模块中提供了面向切面编程的丰富支持,Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖组件,就可以将声明性事务管理集成到应用程序中,可以自定义拦截器、切点、日志等操作。

  4. Spring DAO 模块

    提供了一个 JDBC 的抽象层和异常层次结构,消除了繁琐的 JDBC 编码和数据库厂商特有的错误代码解析,用于简化 JDBC。

  5. Spring ORM 模块

    Spring提供了ORM模块。Spring并不试图实现它自己的ORM解决方案,而是为几种流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATIS SQL映射,这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

  6. Spring Web MVC 模块

    Spring 为构建 Web 应用提供了一个功能全面的 MVC 框架。虽然 Spring 可以很容易地与其它 MVC 框架集成,例如Struts,但Spring的MVC框架使用IoC对控制逻辑和业务对象提供了完全的分离。

  7. Spring Web 模块

    Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 等应用程序提供了上下文,提供了 Spring 和其他 Web 框架的集成,比如 Struts、WebWork。还提供了一些面向服务支持,例如:实现文件上传的 multipart 请求。

  8. Spring WebFlux 模块

    Spring Framework 中包含的原始 Web 框架 Spring Web MVC 是专门为 Servlet API 和 Servlet 容器构建的。反应式堆栈 Web 框架 Spring WebFlux 是在 5.0 版的后期添加的。它是完全非阻塞的,支持反应式流(Reactive Stream)背压,并在 Netty,Undertow和Servlet 3.1+ 容器等服务器上运行。

Spring 特点

  1. 轻量

    1. 从大小和开销两方面而言 Spring 都是轻量的。完整的 Spring 框架可以在一个大小只有 1MB 多的 JAR 文件里面发布 。并且 Spring 所需的处理开销也是微不足道的。
    2. Spring 是非侵入式的:Spring 应用中的对象不依赖于 Spring 的特定类。
  2. 控制反转

    可以认为 IoC 和JNDI 相反,IoC 不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

  3. 面向切面

    Spring 允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。

  4. 容器

    Spring 包含并管理应用对象的配置和生命周期,在这个意义上它是一个容器,可以配置每个 bean 如何被创建——基于一个配置原型(prototype),bean 可以创建一个单独的实例或每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring 不应该被混同于传统的重量级的 EJB 容器,它们经常是庞大与笨重的,难以使用。

  5. 框架

    Spring 可以将简单的组件配置组合成为复杂的应用。在 Spring 中,应用对象被声明式地组合,典型地是在一个 XML 文件里。