《Spring in Action》第四版第一章《将Spring付诸实践》读书笔记(二)
2016-10-23 21:24
537 查看
原文链接地址:http://tantanit.com/springinaction-di-si-ban-di-yi-zhang-jiang-spring-fu-zhu-shi-jian-du-shu-bi-ji-er/
Spring in Action(Spring实战)的这一章是对Spring进行概述,讲述了Spring的项目宗旨,基本原理和关键策略。并且对Spring框架进行了概览,比较Spring4与之前版本的区别。
这一章的读书笔记分为两篇,上一篇是对Spring的项目宗旨,基本原理和关键策略的读书笔记,这一篇对Spring框架进行概览,并比较Spring4与之前版本的区别。
Spring不仅通过依赖注入、面向方面编程和减少样板化重复代码(boilerplate)简化了Java开发,而且在核心框架之外,Spring生态系统将功能扩展到web services, REST, mobile和NoSQL等领域。
![](http://tantanit.com/images/spring4-20-modules.png)
![](http://tantanit.com/images/spring4-20-modules-of-6-groups.png)
Spring的二十个模块可以满足Java企业级开发的所有需求。但是我们的应用程序不必全都使用Spring,我们可以根据需要使用其它组件来替换Spring的组件。Spring甚至为一些其它框架和库写好了集成代码,真是业界良心啊!
下面分别讲解Spring的六组模块。
除了bean工厂和应用上下文,这个模块还提供了许多企业级服务,比如邮件、JNDI、EJB和任务调度。
所有的模块都是以这个模块为基础。当配置Spring的时候,就已经隐式地使用这些类了。整本书都会讨论这部分,让我们在第二章,深入讨论依赖注入,作为开始吧。
比起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应用,这个模块还为和其它应用程序交互提供了一些远程交互可选方案。Remote Method Invocation (RMI)、Hessian、Burlap、JAX-WS以及Spring自己的HTTP invoker。Spring还为构建和使用REST API提供了一流的支持。
第十五章讲述Spring远程交互的内容。而第十六章讲述如何创建和使用REST API。
支持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。
Spring in Action(Spring实战)的这一章是对Spring进行概述,讲述了Spring的项目宗旨,基本原理和关键策略。并且对Spring框架进行了概览,比较Spring4与之前版本的区别。
这一章的读书笔记分为两篇,上一篇是对Spring的项目宗旨,基本原理和关键策略的读书笔记,这一篇对Spring框架进行概览,并比较Spring4与之前版本的区别。
Spring不仅通过依赖注入、面向方面编程和减少样板化重复代码(boilerplate)简化了Java开发,而且在核心框架之外,Spring生态系统将功能扩展到web services, REST, mobile和NoSQL等领域。
Spring各模块
![](http://tantanit.com/images/spring4-20-modules.png)
![](http://tantanit.com/images/spring4-20-modules-of-6-groups.png)
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。
相关文章推荐
- 《Spring in Action》第四版第一章《将 Spring 付诸实践》读书笔记(一)
- Spring In Action 4(Spring实战第四版)翻译与理解 第一章 付诸行动
- 【Spring】【笔记】《Spring In Action》第一章 读书笔记
- Spring in Action(第二版)中文版读书笔记(2-1)
- spring in action Third (第一章)
- SPRING IN ACTION 第4版笔记-第一章-004-用类来管理DI
- Spring in action 读书笔记
- 《Spring In Action》 读书笔记(2) -- bean装配
- Spring in Action 中文版(第二版)读书笔记(2-2)
- SPRING IN ACTION 第4版笔记-第一章-002-DI介绍
- SPRING IN ACTION 第4版笔记-第一章-003-AOP介绍
- Cpp Concurrency In Action 读书笔记 第一章
- Spring in Action 学习笔记—第一章 开始Spring之旅(转贴)
- Spring in Action 学习笔记—第一章开始Spring之旅
- Spring In Action(第三版)读书笔记
- Spring in Action(第二版)中文版读书笔记(1-2)
- Spring in Action 读书笔记之二-----------SpEL初步和容器的注入
- think in java 第四版读书笔记 第一章对象导论
- 《Spring In Action》 读书笔记(4) -- SpEL表达式的简单应用
- 《Spring In Action》 读书笔记(1) -- bean装配