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

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。
© 2022 谈谈IT All Rights Reserved. 本站访客数人次 本站总访问量
Theme by hiero