栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

读《Spring实战(第5版)》

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

读《Spring实战(第5版)》

读过第4版,已经捐出去了。

第 1 部分 Spring 基础

第 1 章 Spring 起步 3

1.1 什么是Spring 4

1.2 初始化Spring 应用 6

1.2.1 使用Spring Tool Suite

那就是在基于Eclipse的基础上,spring提供了针对Spring开发的Spring Tool Suite集成开发工具,通过该工具,可以很轻易地生成一个spring的工程,比如web工程,最令人兴奋的是工程里的配置文件都会自动为你生成,你再也不用操心配置文件的格式及各种配置文件了。

Spring Tool Suite的官方下载地址是:

http://www.springsource.org/downloads/sts-ggts

Spring | Tools

(当前最新版本是 4.11.0 ,2021-8-10)

初始化 Spring 项目 7

1.2.2 检查Spring 项目的结构 10

1.3 编写Spring 应用 16

1.3.1 处理Web 请求 16

1.3.2 定义视图 17

1.3.3 测试控制器 18

1.3.4 构建和运行应用 20

1.3.5 了解Spring Boot DevTools 21

1.3.6 回顾一下 23

1.4 俯瞰Spring 风景线 24

1.4.1 Spring 核心框架 24

1.4.2 Spring Boot 25

1.4.3 Spring Data 25

1.4.4 Spring Security 25

1.4.5 Spring Integration 和Spring Batch 26

1.4.6 Spring Cloud 26

1.5 小结 26

第 2 章 开发Web 应用 27

2.1 展现信息 27

2.1.1 构建领域类 28

2.1.2 创建控制器类 30

2.1.3 设计视图 33

2.2 处理表单提交 37

2.3 校验表单输入 43

2.3.1 声明校验规则 43

2.3.2 在表单绑定的时候执行校验 45

2.3.3 展现校验错误 46

2.4 使用视图控制器 48

2.5 选择视图模板库 49

2.6 小结 52

第3 章 使用数据 53

3.1 使用JDBC 读取和写入数据 53

3.1.1 调整领域对象以适应持久化 55

3.1.2 使用JdbcTemplate 56

3.1.3 定义模式和预加载数据 61

3.1.4 插入数据 63

3.2 使用Spring Data JPA 持久化数据 72

3.2.1 添加Spring Data JPA 到项目中 72

3.2.2 将领域对象标注为实体 73

3.2.3 声明JPA repository 76

3.2.4 自定义JPA repository 77

3.3 小结 80

第4 章 保护Spring 81

4.1 启用Spring Security 81

4.2 配置Spring Security 83

4.2.1 基于内存的用户存储 85

4.2.2 基于JDBC 的用户存储 86

4.2.3 以LDAP 作为后端的

用户存储 89

4.2.4 自定义用户认证 92

4.3 保护Web 请求 100

4.3.1 保护请求 100

4.3.2 创建自定义的登录页 103

4.3.3 退出 105

4.3.4 防止跨站请求伪造 106

4.4 了解用户是谁 107

4.5 小结 109

第5 章 使用配置属性 111

5.1 细粒度的自动配置 112

5.1.1 理解Spring 的环境抽象 112

5.1.2 配置数据源 114

5.1.3 配置嵌入式服务器 115

5.1.4 配置日志 116

5.1.5 使用特定的属性值 118

5.2 创建自己的配置属性 118

5.2.1 定义配置属性的持有者 120

5.2.2 声明配置属性元数据 123

5.3 使用profile 进行配置 125

5.3.1 定义特定profile 的属性 126

5.3.2 激活profile 127

5.3.3 使用profile 条件化地创建 bean 128

5.4 小结 129

第2部分 Spring 集成

第6 章 创建REST 服务 133

6.1 编写RESTful 控制器 134

6.1.1 从服务器中检索数据 136

get

@GetMapping

6.1.2 发送数据到服务器端 140

post

6.1.3 在服务器上更新数据 142

put

path

6.1.4 删除服务器上的数据 144

delete

6.2 启用超媒体 145

6.2.1 添加超链接 147

6.2.2 创建资源装配器 149

6.2.3 命名嵌套式的关联关系 154

6.3 启用数据后端服务 155

6.3.1 调整资源路径和关系名称 157

6.3.2 分页和排序 159

6.3.3 添加自定义的端点 160

6.3.4 为Spring Data 端点添加自定义的超链接 162

6.4 小结 163

第 7 章 消费 REST 服务 165

7.1 使用 RestTemplate 消费 REST 端点 166

7.1.1 GET 资源 167

7.1.2 PUT 资源 169

7.1.3 DELETE 资源 169

7.1.4 POST 资源 169

7.2 使用 Traverson 导航 REST API 170

7.3 小结 172

第8 章 发送异步消息 173

8.1 使用JMS 发送消息 174

JMS 消息使用目的地名称来寻址。

8.1.1 搭建 JMS 环境 174

8.1.2 使用JmsTemplate 发送消息 176

8.1.3 接收JMS 消息 183

8.2 使用RabbitMQ 和 AMQP 186

RabbitMQ 是 AMQP 高级实现。提供了比 JMS 更高级的消息路由策略。

AMQP 消息使用 Exchange 和 routing key 来寻址。消息与接收者要监听的队列解耦了。

8.2.1 添加 RabbitMQ 到 Spring 中 188

编写,添加 pom.xml

org.springframework.boot

spring-boot-starter-amqp

一个 AMQP 连接工厂和 RabbitTemplate bean。

配置文件

*.yaml

8.2.2 通过 RabbitTemplate 发送消息 189

send()    // 发送原始的消息

convertAndSend()        // 发送根据对象转换而成的消息

8.2.3 接收来自 RabbitMQ 的消息 192

接收消息

receive()

接收由消息转换而成的对象

receiveAndConvert()

接收由消息转换而成的类型安全的对象

receiveAndConvert()

8.3 使用 Kafka 的消息 196

8.3.1 为 Spring 搭建支持 Kafka 消息的环境 197

8.3.2 通过 Kafka Template 发送消息 198

8.3.3 编写 Kafka 监听器 200

8.4 小结 201

第9 章 Spring 集成 203

9.1 声明一个简单的集成流 204

9.1.1 使用 XML 定义集成流 205

9.1.2 使用 Java 配置集成流 207

9.1.3 使用 Spring Integration 的 DSL 配置 209

9.2 Spring Integration 功能概览 210

官网给出的解释是,spring-integration 是一个功能强大的 EIP (Enterprise Integration Patterns),即企业集成模式。对,spring-integration 是一个集大成者。就我自己的理解,集成了众多功能的它,是一种便捷的事件驱动消息框架用来在系统之间做消息传递的。

spring-integration 的目标

  •     提供一个简单的模型来实现复杂的企业集成解决方案

  •     为基于spring的应用添加异步的、消息驱动的行为

spring-integration 的原则

  •     组件之间应该是松散的,模块性的易测的

  •     应用框架应该强迫分离业务逻辑和集成逻辑

  •     扩展节点应该有更好的抽象和可以再使用的能力   

参考

spring-integration初探_Doubletree.lin的博客-CSDN博客

9.2.1 消息通道 211

9.2.2 过滤器 212

9.2.3 转换器 213

9.2.4 路由器 214

9.2.5 切分器 216

9.2.6 服务激活器 218

9.2.7 网关 220

9.2.8 通道适配器 221

9.2.9 端点模块 223

9.3 创建 Email 集成流 224

9.4 小结 229

第3部分 反应式 Spring

第 10 章 理解反应式编程 233

10.1 反应式编程概览 234

10.2 初识Reactor 237

Reactor的类型

Reactor有两种类型,Flux和Mono。Flux类似RxJava的Observable,它可以触发零到多个事件,并根据实际情况结束处理或触发错误。

Mono最多只触发一个事件,它跟RxJava的Single和Maybe类似,所以可以把Mono用于在异步任务完成时发出通知。

因为这两种类型之间的简单区别,我们可以很容易地区分响应式API的类型:从返回的类型我们就可以知道一个方法会“发射并忘记”或“请求并等待”(Mono),还是在处理一个包含多个数据项的流(Flux)。

Flux和Mono的一些操作利用了这个特点在这两种类型间互相转换。例如,调用Flux的single()方法将返回一个Mono,而使用concatWith()方法把两个Mono串在一起就可以得到一个Flux。类似地,有些操作对Mono来说毫无意义(例如take(n)会得到n>1的结果),而有些操作只有作用在Mono上才有意义(例如or(otherMono))。

Reactor设计的原则之一是要保持API的精简,而对这两种响应式类型的分离,是表现力与API易用性之间的折中。

10.2.1 绘制反应式流图 238

一般使用弹珠图( marble diagram )表示。

10.2.2 添加 Reactor 依赖 239

pom.xml

10.3 使用常见的反应式操作 240

创建,组合,转换,逻辑操作。

500多个操作

10.3.1 创建反应式类型 240

根据对象创建

根据集合创建

生成 Flux 的数据

10.3.2 组合反应式类型 244

合并反应式类型

10.3.3 转换和过滤反应式流 248

10.3.4 在反应式类型上执行逻辑操作 258

10.4 小结 259

反应式编程会涉及创建数据流经的处理管道。

第 11 章 开发反应式API 261

11.1 使用Spring WebFlux 261

11.1.1 Spring WebFlux 简介 262

11.1.2 编写反应式控制器 264

11.2 定义函数式请求处理器 268

11.3 测试反应式控制器 271

11.3.1 测试GET 请求 271

11.3.2 测试POST 请求 274

11.3.3 使用实时服务器进行测试 275

11.4 反应式消费 REST API 276

11.4.1 获取资源 277

11.4.2 发送资源 279

11.4.3 删除资源 280

11.4.4 处理错误 280

11.4.5 交换请求 282

11.5 保护反应式Web API 283

11.5.1 配置反应式Web 应用的安全性 284

11.5.2 配置反应式的用户详情服务 285

11.6 小结 287

第 12 章 反应式持久化数据 289

12.1 理解 Spring Data 的反应式概况 290

12.1.1 Spring Data 反应式本质论 290

12.1.2 反应式和非反应式类型之间的转换 291

12.1.3 开发反应式 repository 292

12.2 使用反应式的 Cassandra repository 293

12.2.1 启用 Spring Data Cassandra 293

12.2.2 理解 Cassandra 的数据模型 296

12.2.3 将领域对象映射为 Cassandra 持久化 296

12.2.4 编写反应式 Cassandra repository 301

12.3 编写反应式的

MongoDB repository 304

12.3.1 启用Spring Data

MongoDB 304

12.3.2 将领域对象映射为

文档 306

12.3.3 编写反应式的MongoDB

repository 接口 309

12.4 小结 312

第4 部分 云原生 Spring

第 13 章 注册和发现服务 315

13.1 思考微服务 316

13.2 搭建服务注册中心 318

13.2.1 配置Eureka 321

13.2.2 扩展Eureka 324

13.3 注册和发现服务 325

13.3.1 配置Eureka 客户端属性 326

13.3.2 消费服务 328

13.4 小结 332

第 14 章 管理配置 333

14.1 共享配置 334

14.2 运行配置服务器 335

14.2.1 启用配置服务器 336

14.2.2 填充配置仓库 339

14.3 消费共享配置 341

14.4 提供特定应用和profile 的

属性 343

14.4.1 提供特定应用的属性 343

14.4.2 提供来自profile 的

属性 344

14.5 保持配置属性的

私密性 346

14.5.1 在Git 中加密属性 346

14.5.2 在Vault 中存储私密信息 349

14.6 在运行时刷新配置属性 353

14.6.1 手动刷新配置属性 354

14.6.2 自动刷新配置属性 356

14.7 小结 363

第 15 章 处理失败和延迟 365

解决代码可能会失败的问题。

15.1 理解断路器模式 365

15.2 声明断路器 367

15.2.1 缓解延迟 369

15.2.2 管理断路器的阈值 371

15.3 监控失败 372

方法被调用了多少次

调用成功了多少次

后备方法调用了多少次

方法超时了多少次

15.3.1 Hystrix dashboard 简介 373

15.3.2 理解 Hystrix 的线程模型 375

15.4 聚合多个 Hystrix 流 377

15.5 小结 378

第5 部分 部署Spring

第 16 章 使用Spring Boot Actuator 381

16.1 Actuator 概览 382

16.1.1 配置Actuator 的基础路径 383

16.1.2 启用和禁用Actuator端点 383

16.2 消费Actuator 端点 384

16.2.1 获取应用的基础信息 385

16.2.2 查看配置细节 388

16.2.3 查看应用的活动 396

16.2.4 获取应用的指标 398

16.3 自定义Actuator 401

16.3.1 为“/info”端点提供信息 401

16.3.2 实现自定义的健康指示器 405

16.3.3 注册自定义的指标 407

16.3.4 创建自定义的端点 408

16.4 保护Actuator 411

16.5 小结 413

第 17 章 管理Spring 415

17.1 使用Spring Boot Admin 415

17.1.1 创建Admin 服务器 416

17.1.2 注册Admin 客户端 418

17.2 探索Admin 服务器 421

17.2.1 查看应用基本的健康状况

和信息 421

17.2.2 观察核心指标 423

17.2.3 探查环境属性 424

17.2.4 查看和设置日志级别 424

17.2.5 监控线程 425

17.2.6 跟踪HTTP 请求 426

17.3 保护Admin 服务器 428

17.3.1 为Admin 服务器启用登录功能 428

17.3.2 为Actuator 启用认证 429

17.4 小结 429

第 18 章 使用JMX 监控 Spring 431

18.1 使用Actuator MBean 431

18.2 创建自己的MBean 434

18.3 发送通知 436

18.4 小结 437

第 19 章 部署Spring 439

19.1 权衡各种部署方案 440

19.2 构建和部署WAR

文件 441

19.3 推送JAR 文件到Cloud

Foundry 上 443

19.4 在Docker 容器中运行

Spring Boot 445

19.5 以终为始 449

19.6 小结 449

附录 初始化Spring 应用 451

A.1 使用Spring Tool Suite

初始化项目 451

A.2 使用IntelliJ IDEA 初始化

项目 454

A.3 使用NetBeans 初始化

项目 457

A.4 在start.spring.io 中初始化

项目 459

A.5 使用命令行初始化

项目 462

A.5.1 curl 和Initializr API 462

A.5.2 Spring Boot 命令行

接口 464

A.6 使用元框架创建Spring

应用 465

A.7 构建和运行项目 465

写的给我感觉并不细至,好多地方给不熟悉的人,如我看着断断续续的。好多编程书如此。

试着写个例子 http api web 示例 hello world

访问网址:http://localhost:8081/hello

终端下会打印:Hello world!

主要修改几处:

1,配置文件,D:katuWorkmycodetur01pom.xml

    4.0.0             org.springframework.boot         spring-boot-starter-parent         2.6.0-SNAPSHOT                 com.example     tur01     0.0.1-SNAPSHOT     tur01     tur01             1.8                             org.springframework.boot             spring-boot-starter-web                             org.springframework.boot             spring-boot-starter                             org.springframework.boot             spring-boot-devtools             runtime             true                             org.springframework.boot             spring-boot-starter-test             test                             org.springframework.boot             spring-boot-starter-web             RELEASE             compile                             ch.qos.logback             logback-classic             1.2.3                                                 org.slf4j                     slf4j-log4j12                                                         ch.qos.logback             logback-core             1.2.3                                                     org.springframework.boot                 spring-boot-maven-plugin                                                 spring-milestones             Spring Milestones             https://repo.spring.io/milestone                             false                                         spring-snapshots             Spring Snapshots             https://repo.spring.io/snapshot                             false                                                 spring-milestones             Spring Milestones             https://repo.spring.io/milestone                             false                                         spring-snapshots             Spring Snapshots             https://repo.spring.io/snapshot                             false                        

2,配置文件:D:katuWorkmycodetur01srcmainresourcesapplication.properties

加入端口号

server.port=8081

3,程序入口类

package com.example.tur01; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @SpringBootApplication public class Tur01Application {     public static void main(String[] args) {         SpringApplication.run(Tur01Application.class, args);     }     @RequestMapping("hello")     void helloworld() {         System.out.println("Hello world!");     }     public TomcatServletWebServerFactory servletContainer() {         return new TomcatServletWebServerFactory(8081);     } }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/324981.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号