美文网首页
读书总结《Spring实战》

读书总结《Spring实战》

作者: 简栋梁 | 来源:发表于2020-10-07 17:29 被阅读0次

第1部分 Spring 基础

第1章 Spring 起步

Spring Boot 关键目录、文件

  • /src/main/java
    存放 java核心资源,包括业务代码文件、引导文件
  • /src/main/resources
    存放 非java资源,包括静态资源(图片、css、js等)、模板html、Spring Boot 配置文件
  • /src/test/java
    存放 java测试资源,用于测试核心代码
  • /target
    存放 构建结果文件
  • /pom.xml
    maven构建规范

Spring 重点项目

  • Spring 核心框架
    主要内容:IOC容器、依赖注入、Spring MVC、数据持久化、反应式编程。
  • Spring Boot
    Spring 不可或缺的脚手架,为开发者提供了极大的便利。
    主要特性:核心依赖集成、自动配置、状态监控、命令行接口。
  • Spring Data
    在数据持久化方面,提供更强大的支持。
  • Spring Security
    安全框架,包括身份验证、授权、API安全性。
  • Spring Integration 和 Spring Batch
    分别解决实时集成问题、批处理集成问题。
  • Spring Cloud
    提供开发云原生应用的能力。

常用工具

  • Thymeleaf
    主流的模板引擎,用于服务端渲染
  • Spring Boot DevTools
    监控 /src/main 目录,实现热更新功能
第2章 开发 Web 应用

请求映射注解

  • @RequestMapping
    类级别,定义父级路径
  • @???Mapping
    方法级别,定义子级路径,以及HTTP方法类型

参数校验注解

  • @Valid
    对请求对象开启校验模式
  • 字段约束注解
    @NotBlank、@CreditCardNumber等

常用工具

  • Lombok
    简化实体类代码,开发者无需显式编写getter、setter等常用方法。
第3章 使用数据

描述了使用JDBC、Spring Boot Data,与数据库交互的基本流程。

第4章 保护 Spring

通过 Spring Security,绑定用户存储(数据库、LDAP),实现登录、注册、注销等功能。

第5章 使用配置属性

使用自动配置特性之前,要把属性值从 bean 中抽离出来,常用抽离点如下

  • 项目内部,定义 配置文件 和 Spring profile
    推荐。配置文件命名为 application.properties / application.yml;Spring profile 是一种条件化配置文件,命名为 application-{profileName}.properties / application-{profileName}.yml
  • 操作系统内部,定义环境变量
    不推荐。对系统依赖性大,不好迁移、管理。

第2部分 Spring 集成

第6章 创建 REST 服务

重点

  • 为了绕过视图和模型的逻辑并将数据直接写入响应体中,控制器处理方法既可以添加 @ResponseBody 注解也可以返回 ResponseEntity 对象
  • @RestController 注解简化了 REST 控制器,使用它的话,处理器方法中就不需要添加 @ResponseBody 注解了
  • Spring HATEOAS 为 Spring MVC 控制器返回的资源启用了超链接功能
  • 借助 Spring Data REST,Spring Data repository 可以自动导出为 REST API
第7章 消费 REST 服务

常用 REST 客户端

  • RestTemplate
    Spring内置的 REST 客户端
  • Traversion
    支持超链接API
第8章 发送异步消息
  • 异步消息在要通信的应用程序之间提供了一个中间层,这样能够实现更松散的耦合和更强的可扩展性
  • Spring 支持使用 JMS、RabbitMQ 或 Apache Kafka 实现异步消息
  • 应用程序可以使用基于模板的客户端(JmsTemplate、RabbitTemplate 或 KafkaTemplate)向消息代理发送消息
  • 接收消息的应用程序可以借助相同的基于模板的客户端以拉取模式消费消息
  • 通过使用消息监听器注解(@JmsListener、@RabbitListener 或 @KafkaListener),消息也可以推送至消费者的 bean 方法中
第9章 Spring 集成
  • 借助 Spring Integration 能够定义流,在进入和离开应用的时候可以对数据进行处理
  • 集成流可以使用 XML、Java 或简洁的 Java DSL 配置风格来进行定义
  • 消息网关和通道适配器会作为集成流的入口和出口
  • 在流动的过程中,消息可以进行转换、切分、聚合、路由,也可以由服务激活器对其进行处理
  • 消息通道连接集成流中的各个组件

第3部分 反应式 Spring

第10章 理解反应式编程
  • 反应式编程会涉及创建数据流经的处理管道
  • 反应式流规范定义了4种类型:Publisher、Subscriber、Subscription 和 Processor(它是 Publisher 和 Subscriber 的组合)
  • Reactor 项目实现了反应式流规范,将反应式流的定义抽象为两个主要的类型,即 Flux 和 Mono,并为每种类型都提供数百个操作
  • Spring 5 利用 Reactor 提供了反应式控制器、repository、REST 客户端以及其他反应式框架的支持
第11章 开发反应式API
  • Spring WebFlux 提供了一个反应式的 Web 框架,它的编程模型是与 Spring MVC 对应的,甚至共享了很多相同的注解
  • Spring 5 还提供了函数式编程模型,作为 Spring WebFlux 的替代方案
  • 反应式控制器可以使用 WestClient 来进行测试
  • 在客户端,Spring 5 提供了 WebClient,也就是 Spring RestTemplate 的反应式等价实现
  • 在保护 Web 应用方面,尽管 WebFlux 在底层有一些区别,但是 Spring Security 5 为反应式安全所提供的编程模型与非反应式 Spring MVC 应用相比并没有特别大的差异
第12章 反应式持久化数据
  • Spring Data 支持为 Cassandra、MongoDB、Couchbase 和 Redis 数据库创建反应式 repository
  • Spring Data 的反应式 repository 遵循与非反应式 repository 相同的编程模型,只不过它们的所处理的是反应式发布者,如 Flux 和 Mono
  • 非反应式 repository(比如 JPA repository)可以调整为使用 Mono 和 Flux,但是在保存和获取数据时它们依然是阻塞的
  • 在使用非关系数据库时,需要理解如何恰当地为数据建模,这个建模过程决定了数据库最终如何存储数据

第4部分 云原生 Spring

本书采用 Spring Cloud Netflix 方案

第13章 注册和发现服务

使用服务注册中心——Eureka,集中注册其他类型的服务, 让服务之间能互相通信,实现服务间URL解耦。
在业务型服务中,使用负载均衡器——Ribbon,可以将流量分摊,避免形成流量瓶颈

第14章 管理配置

使用配置数据源——Spring Cloud Config Server,集中管理服务配置,抽出每个服务的配置代码。
全局配置交给Git管理,特定配置则由 Config Server 管理。数据加密方面,使用 Vault,可以对配置数据进行加锁操作。

配置更新途径

  • Actuator 接口(手动)
  • Spring Cloud Bus(自动)
  • Git webhooks(自动)
第15章 处理失败和延迟

使用断路器——Hystrix,监控方法的调用情况,若因服务故障,导致响应失败、慢,则会关闭服务(被动,服务熔断),启动备用方法(主动,服务降级),保证服务流程的完整性。
实际上,这是一套异常处理、热备方案(智能的 try/catch),防止服务错误累积,引起“雪崩效应”。
而且,Hystrix 具备日志管理功能,通过 Hystrix dashboard 可视化界面,观察服务的健康状况,甚至,可以使用 Turbine 聚合多个 Hystrix 流,以便于集中观察。


第5部分 部署 Spring

第16章 使用 Spring Boot Actuator

安装、配置 Actuator 插件后,服务会开放额外的接口,以便我们实时地访问运行状态、上下文beans等应用信息。另外,通过调用 Actuator 接口,可以实现服务状态监控功能。

第17章 管理 Spring

上章节提到 服务状态监控,有没有现成的轮子呢?答案是:有的,轮子名叫 Spring Boot Admin。
Spring Boot Admin 是 Spring 管理服务,独立于其他 Spring 核心服务,分为三部分——前端、采集端、发送端。

工作流程

  • 发送端调用 Actuator 接口,提取信息
  • 采集端处理、存放信息
  • 前端展示信息

使用流程

  • 安装 Admin
  • 配置 Admin
  • 安装 服务注册中心
  • Admin 升级为服务注册中心
  • Admin 发现 Spring服务
第18章 使用 JMX 监控 Spring

Java管理扩展(JMX)是 Spring Boot 默认开启的,作为监控和管理 beans 的机制。
Spring Boot Actuator 将自身绝大部分接口暴露为 MBean,JMX 客户端操作 MBean,实现管理服务(也就是 Spring Boot Admin 工作流程的一部分)。当然,我们也可以通过注解,把 Bean 升级为 MBean,便于管理业务信息。

第19章 部署 Spring
  • war包
    不推荐。部署方式为 tomcat + war(1) + ... + war(n),过渡依赖中心tomcat,tomcat一挂,全部war包都受影响。
  • jar包
    一般推荐。jar包自带tomcat,且部署流程也比传统的war包部署简便。
  • docker容器
    强烈推荐。在服务管理、交付便利性等方面,都有明显优势,是主流的部署方案。
附录 初始化 Spring 应用

创建 Spring 模板项目的途径多样。其中,通过 IDE 可视化操作(调用内置的 Spring Initializr API)的方式,最为实用。

相关文章

网友评论

      本文标题:读书总结《Spring实战》

      本文链接:https://www.haomeiwen.com/subject/vpjpuktx.html