《Spring in Action》第四版第一章《将 Spring 付诸实践》读书笔记(二)

字数2,080 大约花费8分钟

目录

  1. 1. Spring 各模块
    1. 1.1. Spring 核心(CORE SPRING CONTAINER)
    2. 1.2. Spring 的 AOP 模块
    3. 1.3. 数据访问和集成
    4. 1.4. WEB 和远程交互(remoting)
    5. 1.5. 基础设施(INSTRUMENTATION)
    6. 1.6. 测试
  2. 2. Spring 生态
    1. 2.1. SPRING WEB 流(SPRING WEB FLOW)
    2. 2.2. SPRING WEB 服务(SPRING WEB SERVICES)
    3. 2.3. SPRING 安全(SPRING SECURITY)
    4. 2.4. SPRING INTEGRATION
    5. 2.5. SPRING BATCH
    6. 2.6. SPRING DATA
    7. 2.7. SPRING SOCIAL
    8. 2.8. SPRING MOBILE
    9. 2.9. SPRING FOR ANDROID
    10. 2.10. SPRING BOOT
  3. 3. Spring4.0 的新特性

Spring in Action(Spring 实战)的这一章是对 Spring 进行概述,讲述了 Spring 的项目宗旨,基本原理和关键策略。并且对 Spring 框架进行了概览,比较 Spring4 与之前版本的区别。

这一章的读书笔记分为两篇,上一篇 是对 Spring 的项目宗旨,基本原理和关键策略的读书笔记,这一篇对 Spring 框架进行概览,并比较 Spring4 与之前版本的区别。

Spring 不仅通过依赖注入、面向方面编程和减少样板化重复代码(boilerplate)简化了 Java 开发,而且在核心框架之外,Spring 生态系统将功能扩展到 web services, REST, mobile 和 NoSQL 等领域。

Spring 各模块

Spring4 由 20 个完全不同的模块组成

20 个模块可以分成六组

Spring 的二十个模块可以满足 Java 企业级开发的所有需求。但是我们的应用程序不必全都使用 Spring,我们可以根据需要使用其它组件来替换 Spring 的组件。Spring 甚至为一些其它框架和库写好了集成代码,真是业界良心啊!

下面分别讲解 Spring 的六组模块。

Spring 核心(CORE SPRING CONTAINER)

Spring 框架的核心是 Spring 容器,Spring 容器,它负责创建、配置和管理 bean。Spring 的 bean 工厂在这个模块里,它负责提供依赖注入的功能。在 bean 工厂的基础上,Spring 实现了各种应用上下文,每种上下文提供了一种配置 Spring 的方式。

除了 bean 工厂和应用上下文,这个模块还提供了许多企业级服务,比如邮件、JNDI、EJB 和任务调度。

所有的模块都是以这个模块为基础。当配置 Spring 的时候,就已经隐式地使用这些类了。整本书都会讨论这部分,让我们在第二章,深入讨论依赖注入,作为开始吧。

Spring 的 AOP 模块

在 AOP 模块,Spring 为面向方面编程提供了丰富的支持。这个模块为你开发自己的方面(aspect)提供了基础。将在第四章,深入讨论面向方面编程。

数据访问和集成

JDBC 经常产生样板化重复代码(boilerplate),Spring 提供了 JDBC 和数据访问对象(data-access objects,简称 DAO), 将这些重复代码抽象化,使数据库代码保持简单、干净,并且避免了由关闭数据库资源失败引起的问题。这个模块组装了数据库常见异常,将数据库返回的信息变得更有意义,更好理解。不用再关注 SQL 的返回的错误消息,并为它解码了。

比起 JDBC,有些人更细化对象关系映射(object-relational mapping,ORM)。Spring 的 ORM 模块在 DAO 的基础上,根据一些 ORM 解决方案,提供了一种根据组装 DAO 的方便的方法。Spring 自身不提供 ORM 解决方案,但是为常用的 ORM 方案,保留了接口。这些方案包括 Hibernate、Java Persistence API、Java Data Objects 和 iBATIS SQL Maps。Spring 为 JDBC 和这些 ORM 框架都提供了事务支持。

在第十章,将介绍 Spring 基于模板的 JDBC 抽象方式,如何极大地简化 JDBC 代码。

在这个模块中,Spring 还为 Java 消息服务(Java Message Service,简称 JMS)进行抽象。这项服务采用异步方式,通过消息和其它应用集成。

从 Spring3.0 开始,这个模块提供了对象到 XML 的映射,这个特性起初是 Spring Web Services 项目的一部分。

此外,这个模块使用 AOP 模块为对象提供事务管理服务。

WEB 和远程交互(remoting)

Model-View-Controller (MVC)范例在 web 应用中被广泛采用,这个范例将用户界面和应用逻辑。Spring 的 web 和远程模块本身是一个 MVC 框架。Spring 可以使用这个框架,也可以使用其它流行的 MVC 框架,Spring 对这些模块都是松耦合的。第五到七章覆盖了 MVC 的详细内容。

除了面向用户的 web 应用,这个模块还为和其它应用程序交互提供了一些远程交互可选方案。Remote Method Invocation (RMI)、Hessian、Burlap、JAX-WS 以及 Spring 自己的 HTTP invoker。Spring 还为构建和使用 REST API 提供了一流的支持。

第十五章讲述 Spring 远程交互的内容。而第十六章讲述如何创建和使用 REST API。

基础设施(INSTRUMENTATION)

这个模块为 JVM 添加代理。特别地,它为 Tomcat 提供了一个代理,当类文件被加载时,这个代理会转换这个类。这个模块用途很窄,所以本书不讲这个。

测试

单元测试方面,这个模块提供接口,为 JNDI,servlets 和 portlets 提供模拟数据。集成测试方面,这个模块支持从应用上下文加载 bean,并在应用上下文中操作这些 bean。

Spring 生态

除了 Spring 核心项目之外,还有许多不容错过的 Spring 项目,这些项目几乎覆盖了 Java 开发的所有方面。下面列举主要项目。

SPRING WEB 流(SPRING WEB FLOW)

SPRING WEB 流基于 Spring 的核心 MVC 框架,为构建引导用户的基于流的 web 应用(比如向导和购物车)提供支持。第八章讲述这方面的内容。也可以在 Spring 官方网站查看 这方面内容

SPRING WEB 服务(SPRING WEB SERVICES)

本书不论述,可以在 Spring 官方网站查看 这方面内容

SPRING 安全(SPRING SECURITY)

这个项目通过使用 AOP 为应用程序提供声明式的安全机制。在第九章会讲述如何将 Spring Security 添加到应用程序的 web 层。在第十四章将会讲解如何验证方法调用的安全性。更多内容,可以查看 项目官方文档

SPRING INTEGRATION

解决与其他应用程序集成的问题,本书不涉及,但可以看《Spring Integration in Action》以及 项目官方文档

SPRING BATCH

解决批处理问题。本书不涉及,但可以看《Spring Batch in Action》以及 项目官方文档

SPRING DATA

无论是关系数据库还是非关系数据库,Spring Data 都为数据持久化提供了简化的编程模型。包括自动生成数据库操作的代码。第十一章将讲述如何使用 Spring Data 简化 Java Persistence API (JPA)。并且在第十二章扩展至 NoSQL 数据库。

SPRING SOCIAL

不仅用于与社交应用连接,可以和 REST API 连接。本书不涉及,与 facebook 连接可以参考 这里 ,与 twitter 连接可以参考 这里

SPRING MOBILE

对 Spring MVC 进行扩展,以支持移动端的 web 开发。

SPRING FOR ANDROID

为开发 ANDROID 应用提供支持,详见 项目官方文档

SPRING BOOT

简化 Spring 配置,将在第 21 章讲述。

Spring4.0 的新特性

书中有讲 Spring3 中 Spring3.2 之后的新特性,这里只记录 4.0 之后的特性。

  • 支持 WebSocket 编程,包括支持 JSR-356:Java API for WebSocket
  • WebSocket 的 API 级别较低,Spring 提供了面向消息编程的模型。这种模型在 WebSocket 之上,基于 SockJS,包含 STOMP 子协议支持。
  • Spring Integration 项目提供了一个带有多种类型的消息模块,这个消息模块支持 Spring 的 SockJS/STOMP。它还支持使用模板发布消息。
  • Spring 是最早支持包括 lambdas 表达式的 Java8 特性的框架之一(或许没有之一)。这使得和使用一些回调接口 (例如带有 JdbcTemplate 的 RowMapper) 更加干净和可读。
  • 随着 Spring 支持 Java8,Spring 支持 JSR-310:日期和时间 API, 这个 API 比 java.util.Date 和 java.util.Calendar 更丰富。
  • 可以使用 Groovy 开发和配置。
  • 支持按照条件创建 bean,只有当开发者定义的条件生效时,才会创建 bean。
  • 为 RestTemplate 提供新的异步实现,直接返回结果,但是允许操作完成后调用回调函数。
  • 为一些 JEE 规范添加支持,包括 JMS 2.0、JTA 1.2、JPA 2.1 和 Bean Validation 1.1。

谈谈 IT的文章均为原创或翻译(翻译会注明外文来源),转载请以链接形式标明本文地址: http://tantanit.com/springinaction-di-si-ban-di-yi-zhang-jiang-spring-fu-zhu-shi-jian-du-shu-bi-ji-er/

谈谈IT

欢迎关注官方微信公众号获取最新原创文章