《Spring Boot实战》阅读整理

Manning出版社出版的《Spring Boot实战》(第1版)Craig Walls (著)/丁雪丰 (译)
Manning主页: https://www.manning.com

Spring Boot主页: https://projects.spring.io/spring-boot/
V1.5.2版本在线文档: http://docs.spring.io/spring-boot/docs/1.5.2.RELEASE/reference/htmlsingle/
GitHub: https://github.com/spring-projects/spring-boot

-------------------------------------------------------------------------
以下是我本人的书评
本书是畅销书《Spring实战》的作者Craig Walls的最新著作。
一个新技术的学习,除了以最快速度上手Hello World之外,还应该了解它的产生背景,主要用途等等方面。从本质上来说,Spring Boot就是Spring,它的目的是为了简化Spring开发。纵观人类文明史,其实就是懒人的福利,不想洗衣服,于是有了洗衣机,从半自动到全自动再到烘洗一体等。不想扫地,于是有了吸尘器,从有线到手持无线再到扫地机器人。对于Java开发者,Spring无人不知无人不晓,我刚入行的时候Spring还只是v2.5,现在Srping v5.0的snapshot都出来了,感概下。而正是因为Spring开发团队的不懈努力,才能解放我们的“双手”,让我们的代码变的更加简洁以及好维护。
本书主要针对的是Spring Boot的入门,要说快速入门有很多方式,blog、github、或是官网的文档都是学习的好地方。但是我想说的是,我花了一天的时间就看完了《Spring Boot实战》,然后对于这个框架有了一个系统的了解,算起来性价比还是很高的!当然如果是想深入了解Spring Boot,还是得从其它途径入手。

-------------------------------------------------------------------------
本书目录:
  • 第1章,入门
  • 第2章,开发第一个应用程序
  • 第3章,自定义配置
  • 第4章,测试
  • 第5章,Groovy与Spring Boot CLI
  • 第6章,在Spring Boot中使用Grails
  • 第7章,深入Actuator
  • 第8章,部署Spring Boot应用程序
  • 附录A,Spring Boot开发者工具
  • 附录B,Spring Boot起步依赖
  • 附录C,配置属性
  • 附录D,Spring Boot依赖

-------------------------------------------------------------------------
以下是书摘:

【译者序】
Spring Boot为开发者带来了更好的开发体验,但写完代码只是万里长征路上的一小步,后续的运维工作才是让很多人真正感动无助的。Spring Boot在运维方面做了很多工作,部署、监控、度量,无一不在其涉猎范围之内,结合Spring Cloud后还可以轻松地实现服务发现、服务降级等功能。

【序】
Spring Boot正是十几年来Java社区所探寻的那种框架。它那简单易用的开发特性和开箱即用的运维能力,让Java开发再度趣味横生。

【前言】
似乎每个Spring应用程序都让开发者的生活更上一个台阶,仅从Spring的组件的声明和织入方式就能看出端倪。让我们来看看Spring历史中的一些演化历程。
  • Spring1.0的出现彻底改变了我们开发企业级Java应用程序的方式。Spring的依赖注入与声明式事务意味着组件之间再也不存在紧耦合,再也不用重量级的EJB了。这玩意儿不能更好了。
  • 到了Spring2.0,我们可能在配置里使用自定义的XML命名空间,更小、更简单易懂的配置文件让Spring本身更便于使用。这玩意儿不能更好了。
  • Spring2.5让我们有了更优雅的面向注解的依赖注入模型(即@Conponent和@Autowired注解),以及面向注解的Srping MVC编程模型。不用再去显式地声明应用程序组件了,也不用需要去继承某个基础的控制类了。这玩意儿不能更好了。
  • 到了Spring3.0,我们有了一套基于Java的全新配置,它能够取代XML。在Spring3.1里,一系列以@Enable开头的注解进一步完善了这一特性。终于,我们第一次可以写出一个没有任何XML配置的Spring应用程序了。这玩意不能更好了。
  • Spring4.0对条件化配置提供了支持,根据应用程序的Classpath、环境和其他因素,运行时决策将决定使用哪些配置,忽略哪些配置。那些决策不需要在构建时通过编写脚本确定了;以前会把选好的配置放在部署的包里,现在情况不用了。这玩意不能更好了。

当我们觉得什么东西不可能更好了的时候,它一定会变的更好。Spring Boot的进步正在带来越来越大的益处。真的难以想象Srping还能变得更好,但它肯定会更好。毫无疑问,Spring的前景总是美好的。

【第1章】入门
Spring Boot四个核心: 自动配置、起步依赖、命令行界面、Actuator。

Spring Boot没有引入任何开式的代码生成,而是利用了Spring 4的条件化配置特性,以及Maven和Gradle提供的传递依赖解析,以此实现Spring应用程序上下文里的自动配置。

从根本上来说,Spring Boot的项目只是普通的Spring项目,只是它们正好用到了Spring Boot的起步依赖和自动配置而已。


Spring Boot CLI安装。

【第2章】开发第一个应用程序
@SpringBootApplication开启了Spring的组件扫描和Spring Boot的自动配置功能。

Spring Boot通过提供众多起步依赖降低项目依赖的复杂度。起步依赖本质上是一个Maven项目对象模型(POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。(一般以spring-boot-start-*的形式)。

Spring Boot的依赖不需要指定版本。
不知道自己所用依赖的版本,你多少有些不安。你要有信心,相信Spring Boot经过了足够的测试,确保引入的全部依赖都能相互兼容。这是一种解脱,只需指定起步依赖,不用担心自己需要维护哪些库,也不必担心它们的版本。(当然真的想看还是有很多办法的,比如mvn dependency命令或是通过Spring Boot actuator端点)。

Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。(其实就是一个做决策的过程)。
每当应用程序启动的时候,Spring Boot的自动配置都要做将近200个决定,涵盖安全、集成、持久化、Web开发等诸多方面。所有这些自动配置就是为了尽量不让你自己写配置。

自动配置相关JAR: spring-boot-autoconfigure。

所有这些配置如此与众不同,原因在于它们利用了Spring的条件化配置,这是Spring4.0引入的新特性。条件化配置允许配置存在于应用程序中,但在满足某些特定条件之前都忽略这个配置。

【第3章】自定义配置
Spring Boot的设计是先加载应用级配置,随后再考虑自动配置类。

application.properties\application.yml

如何使用自定义的配置。
Spring Boot的属性解析器非常智能,它会自动把驼峰规则的属性和使用连字符或下划线的同名属性关职起来。

默认错误页: error.*
默认资源: src/main/resources/static或src/main/resources/public

【第4章】测试
SpringJunit4ClassRunner

Spring: @ContextConfigureation: 指定了如何加载应用程序上下文。
Spring Boot: @SpringApplicationConfiguration: 加载Spring应用程序上下文,包括加载外部属性和Spring Boot日志。

Spring Mock MVC框架。(Since Spring v3.2)

HTML应用程序测试: Selenium(www.seleniumhq.org)

【第5章】Groovy与Spring Boot CLI
命令行工具Spring Boot CLI将强大的Spring Boot和Groovy结合到一起,针对Spring应用程序形成了一套简单而又强大的开发工具。

【第6章】在Spring Boot中使用Grails

【第7章】深入Actuator
Spring Boot Actuator提供了很多生产级的特性,比如监控和度量Spring Boot应用程序。Actouator的这些特性可以通过众多方式如REST端点、远程shell和JMX获得。

端点(Endpoints)列表:
官网可查: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready

端点举例
查看配置明细: /beans,/autoconfig,/evn,/mappings
运行时度量: /metrics,/trace,/dump,/health
关闭应用程序: /shutdown
获取应用信息: /info

定制Actuator
1. 修改端点ID
2. 启用和禁用端点
3. 添加自定义度量信息(比如定制/metrics,指定方法X被调用了多少次,最后一次调用的时间)。
4. 创建自定义跟踪仓库(比如定制/trace,扩充默认的100条跟踪条数到x,或往MongoDB中保存跟踪数据等)。
5. 插入自定义健康指示器(定制/health)。

保护Actuator: 使用Spring Security保护端点:
1. 定义所有的端点,有个固定的前缀。
2. 使用Security中的通配来保护端点。

【第8章】部署Spring Boot应用程序
Spring Boot应用程序可以用多种方式打包:
部署产物 产生方式 目标环境
Groovy源码 手写 Cloud Foundary及容器部署,比如Docker
可执行JAR Maven、Gradle或Spring Boot CLI 云环境,所括Cloud Foundary和Heroku,还有容器部署,比如Docker
WAR Maven或Gradle Java应用服务器或云环境,比如Cloud Foudary


构建WAR文件
SpringBootServletInitialiar#configure(SpringApplicationBuilder builder)

>mvm package
Servlet上下文路径会与WAR文件的主文件名相同。

-------------------------------------------------------------------------
本书提到的一些技术:

Groovy语言
构建工具: Maven、Gradle

《Spring实战》(第4版)

Spring Tool Suite是Eclipse IDE的一个发行版,增加了诸多能辅助Spring开发的特性。

用Thymeleaf定义Web视图

Spring Data JPA \ Spring Data MongoDB
Spring Security

Spring Boot的默认日志: LogBack( http://logback.qos.ch

Grails是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、Hibernate等开源框架之上,是一个高生产力一站式框架。

两款流行的数据库迁移库:
Flyway( http://flywaydb.org
Liquibase( http://www.liquibase.org

猜你喜欢

转载自angelbill3.iteye.com/blog/2365501