Tony's Blog

读完了Spring实战第六版……

终于,花了差不多一个月的时间把这本书过了一遍。虽可以囫囵吞枣地读完,但是我还是做了一系列的笔记,对一些自己不熟悉的知识点做了记录。 收获固然很大,但是在读之前没想到会接触到那么多响应式内容,感觉作者 trying hard to sell it. 但最终那么多的内容也只是一个how to do(正如书名那样) ,而没有深入讲解为什么这样做、如何设计和选择的内容。因此,我对这个全新的领域还...

构建与部署SpringBoot应用程序

书中简单地谈了谈Kubernetes的操作,但本博文没有记录。 本博文将会非常简单记录构建与项目部署的简单步骤,不涉及运维内容。所以会很简短。 直接在IDE中,或者在终端中使用Maven/Gradle 工具启动项目是很方便的,但是这种方式并不适合生产环境。本章将介绍如何将Spring Boot应用程序部署到生产环境中。 构建 构建可执行的jar文件 构建可执行的war文件 ...

通过使用Spring Boot Actuator监控应用程序,并结合Spring Boot Admin以获得更出色的UI界面

Actuator是Spring Boot提供的一个监控和管理生产环境的模块,它提供了很多的端点(也支持自定义断点),可以通过HTTP或者JMX的方式进行访问。 通过访问这些断点,我们可以获得应用的一些信息,比如应用的健康状况,应用的配置信息,应用的性能指标等等。 Actuator介绍 在机械工程领域中,”Actuator”通常指代驱动器或执行器,用于转换输入能量为机械运动或执行某种操作。...

响应式的异步网络消息传递协议 - RSocket的简单介绍与在Spring中的使用示例

一些网络概念的补充: RSocket、WebSocket、HTTP均为应用层的协议,三者都基于传输层的TCP协议。 HTTP是无状态的请求/响应协议。Client发送请求,Server进行响应,然后链接关闭。 Server端无法主动向Client端发送消息。 WebSocket允许Server端主动向Client端发送消息的协议。是全双工的。 因为WebSocket协议的建...

在Spring中响应式地持久化数据

无论是进行响应式开发还是传统开发,Spring Data家族中的项目都保持着较高的一致性。这意味着与 之前SpringData博文 中的内容相比,本文中的许多内容都会重复出现。因此,本文将着重记录与之前内容不同的部分,并对其进行简要介绍。 R2DBC - JDBC的响应式替代 作者在《Spring实战第六版》中的写作时间大约在2020年左右。那个时候,R2DBC相对于JDBC在使...

使用Spring WebFlux开发响应式API

在之前一节的Blog中介绍了响应式编程的基本架构-Reactor,以及响应式编程的基本概念,本博文将介绍使用Spring WebFlux( 一个基于Reactor的,抽象级别更高的架构)来开发响应式API。 SpringWebFlux intro 先回顾一下已经很熟悉的SpringMVC,该框架是基于Servlet的,其本质上是阻塞与多线程的。 这一点很好理解,一个Http请求要被处...

响应式编程介绍 - Reactor

本文主要介绍响应式编程的概念,与作为响应式编程的实现的Reactor框架的使用。但注意Reactor仍然是一个较为底层的框架,对于响应式的web开发,可以使用Spring WebFlux框架。但其不在本文的讨论范围内。 当我们开发应用程序时,有两种风格的代码我们可以写:命令式和响应式: 同步式(命令式) 的代码是一套串行任务,每次运行一个,完成前一个任务后再完成后一个。数据是批量进行处...

Spring集成的大致使用

集成的意思可以直接参考英文Integration,其还可以翻译为 一体化 具体来说,有时有将系统与外部的其他系统进行集成的需求。比如,你的系统需要从外部系统中获取数据,或者将数据发送给外部系统,或者是将数据转换为其他格式的数据发送给外部系统。 Spring集成简单来说就是 就是让Spring能够与外部的系统发送与接收消息, 并针对消息构建一条流水线进行处理, 从而实现系统间的集成。 其实...

无状态与否,REST服务的形式与设计内涵

最早我自己学习了IT黑马的瑞吉外卖项目时,我对REST服务的理解是片面的。在这个项目中,REST仅仅是作为前后端通信的手段. 我对于REST服务的理解只是局限在形式上,即它仅仅是一种规范,通过指定不同的HTTP请求方式、使用JSON响应等方式来实现前后端通信。但我一直没有很好地理解( 根本不知道)其中一个重要的设计理念——无状态。 直到最近在学习了Spring实战第六版中的使用Oauth2...