
java
文章平均质量分 93
源码头
稀有源码资源提供者
展开
-
Springboot实战结束语 以终为始:Spring Boot 总结和展望
总结完 Spring Boot 的各项核心功能及所具备的创新性,我们再来总结一下整个课程的讲解特色和与其他课程之间的差异。这里,我整理了本课程的三大亮点。第一大亮点:完整介绍了 Spring Boot 开发技术体系。通过学习本课程,你可以全面梳理基于 Spring Boot 的 Web 应用程序开发技术组件,其中包括配置体系、数据访问、Web 服务、消息通信、系统安全、系统监控、系统测试等专项主题。这些技术组件涵盖了 Java EE 应用程序开发涉及的方方面面,具有广泛的应用场景。原创 2023-04-10 13:24:49 · 796 阅读 · 0 评论 -
Springboot实战24 服务测试:如何使用 Spring 测试 Web 服务层组件?
通过前面内容的学习,相信你已经感受到了各种测试注解在测试 Spring Boot 应用程序的过程中所发挥的核心作用。如下所示表格,我们罗列了一些经常使用的测试注解及其描述。原创 2023-04-10 13:23:57 · 452 阅读 · 0 评论 -
Springboot实战23 数据测试:如何使用 Spring 测试数据访问层组件?
作为整个课程最后一部分内容,从这一讲开始,我们将讨论 Spring 提供的测试解决方案。对于 Web 应用程序而言,测试是一个难点,也是经常被忽略的一套技术体系。一个应用程序中涉及数据层、服务层、Web 层,以及各种外部服务之间的交互关系时,我们除了对各层组件的单元测试之外,还需要充分引入集成测试保证服务的正确性和稳定性。原创 2023-04-10 13:23:14 · 320 阅读 · 0 评论 -
Springboot实战22 运行管理:如何使用 Admin Server 管理 Spring 应用程序?
前面 2 讲通过引入 Actuator 组件,我们为 Spring Boot 应用程序添加了系统监控功能。基于 Actuator 暴露的各种 HTTP 端点,开发人员可以获取系统的运行时状态。而端点是一种底层的监控技术,这就要求我们对 HTTP 协议和 Spring Boot 应用程序的构建方式有一定的了解。那么,有没有更简单的、基于可视化的方式获取这些端点背后的信息呢?答案是肯定的。因此,这一讲我们将要介绍 Spring Boot Admin 组件。原创 2023-04-10 13:24:54 · 818 阅读 · 0 评论 -
Springboot实战21 指标定制:如何实现自定义度量指标和 Actuator 端点?
在日常开发过程中,扩展现有端点有时并不一定能满足业务需求,而自定义 Spring Boot Actuator 监控端点算是一种更灵活的方法。在这段代码中我们可以看到,MySystemEndpoint 主要通过系统环境变量获取所需监控信息。原创 2023-04-10 12:45:14 · 1244 阅读 · 0 评论 -
Springboot实战20 服务监控:如何使用 Actuator 组件实现系统监控?
这一讲我们将介绍 Spring Boot 中一个非常有特色的主题——系统监控。系统监控是 Spring Boot 中引入的一项全新功能,它对应用程序运行状态的管理非常有效。而 Spring Boot Actuator 组件主要通过一系列 HTTP 端点提供的系统监控功能来实现系统监控。因此,接下来我们将引入 Spring Boot Actuator 组件,介绍如何使用它进行系统监控,以及如何对 Actuator 端点进行扩展。原创 2023-04-10 11:29:13 · 898 阅读 · 0 评论 -
Springboot实战19 服务授权:如何基于 Spring Security 确保请求安全访问?
18 讲中,我们集中讨论了如何通过 WebSecurityConfigurerAdapter 完成对用户认证体系的构建。这一讲我们将继续使用这个配置类完成对服务访问的授权控制。在日常开发过程中,我们需要对 Web 应用中的不同 HTTP 端点进行不同粒度的权限控制,并且希望这种控制方法足够灵活。而借助 Spring Security 框架,我们就可以对其进行简单实现,下面我们一起来看下。在一个 Web 应用中,权限管理的对象是通过 Controller 层暴露的一个个 HTTP 端点,而这些 HTTP 端点原创 2023-04-10 10:09:45 · 294 阅读 · 0 评论 -
Springboot实战18 用户认证:如何基于 Spring Security 构建用户认证体系?
在 17 讲中,我们梳理了 Web 应用程序的安全性需求,并引出了 Spring Security 这款 Spring 家族中专门用于处理安全性需求的开发框架,同时也明确了认证和授权是安全性框架的核心功能。这一讲我们将先讨论与认证相关的话题,并给出 Spring Security 认证机制及其使用方法。因为 Spring Security 是日常开发过程中的基础组件,所以我们也会对如何实现数据加解密的过程做一些展开。原创 2023-04-30 09:04:42 · 532 阅读 · 0 评论 -
Springboot实战17 安全架构:如何理解 Spring 安全体系的整体架构?
在设计 Web 应用程序时,一方面,因为开发人员缺乏对 Web 安全访问机制的认识,所以系统安全性是一个重要但又容易被忽略的话题。另一方面,因为系统涉及的技术体系非常复杂,所以系统安全性又是一个非常综合的话题。因此,这一讲我们将讨论一个全新的话题—— Spring 中与安全性相关的需求和实现方案。在 Spring 家族中,Spring Security 专门为开发人员提供了一个安全性开发框架,下面我们一起来看下Spring 中安全体系的整体架构。原创 2023-04-09 17:26:38 · 322 阅读 · 0 评论 -
Springboot实战16 消息驱动:如何使用 RabbitTemplate 集成 RabbitMQ?
15 讲我们介绍了基于 ActiveMQ 和 JmsTemplate 实现消息发送和消费,并重构了 SpringCSS 案例系统中的 account-service 和 customer-service 服务。今天,我们将介绍另一款主流的消息中间件 RabbitMQ,并基于 RabbitTemplate 模板工具类为 SpringCSS 案例添加对应的消息通信机制。原创 2023-04-09 17:28:21 · 1788 阅读 · 0 评论 -
Springboot实战15 消息驱动:如何使用 JmTemplate 集成 ActiveMQ?
14 讲我们介绍了基于 Kafka 和 KafkaTemplate 实现消息发送和消费,并重构了 SpringCSS 案例系统中的 account-service 和 customer-service 服务。今天,我们继续介绍 ActiveMQ,并基于 JmsTemplate 模板工具类为 SpringCSS 案例添加对应的消息通信机制。原创 2023-04-09 17:27:46 · 990 阅读 · 0 评论 -
Springboot实战14 消息驱动:如何使用 KafkaTemplate 集成 Kafka?
消息通信机制的整体工作流程如下图所示:消息通信机制示意图上图中位于流程中间的就是各种消息中间件,消息中间件一般提供了消息的发送客户端和接收客户端组件,这些客户端组件会嵌入业务服务中。消息的生产者负责产生消息,在实际业务中一般由业务系统充当生产者;而消息的消费者负责消费消息,在实际业务中一般是后台系统负责异步消费。消息通信有两种基本模型,即发布-订阅(Pub-Sub)模型和点对点(Point to Point)模型,发布-订阅支持生产者消费者之间的一对多关系,而点对点模型中有且仅有一个消费者。原创 2023-04-09 17:24:03 · 2467 阅读 · 0 评论 -
Springboot实战13 服务调用:如何正确理解 RetTemplate 远程调用实现原理?
在 12 讲中,我们详细描述了如何使用 RestTemplate 访问 HTTP 端点的使用方法,它涉及 RestTemplate 初始化、发起请求及获取响应结果等核心环节。今天,我们将基于上一课时中的这些环节,从源码出发让你真正理解 RestTemplate 实现远程调用的底层原理。原创 2023-04-09 17:25:37 · 543 阅读 · 0 评论 -
Springboot实战12 服务调用:如何使用 RetTemplate 消费 RESTful 服务?
事实上,OrderMapper 与 Order 对象的内部字段一一对应,它们分别位于两个不同的代码工程中,为了以示区别我们才故意在命名上做了区分。原创 2023-04-09 17:24:57 · 184 阅读 · 0 评论 -
Springboot实战11 服务发布:如何构建一个 RESTful 风格的 Web 服务?
通过前面课程的学习,我们已经掌握了构建一个 Spring Boot 应用程序的数据访问层组件实现方法。接下来的几讲,我们将讨论另一层组件,即 Web 服务层的构建方式。服务与服务之间的交互是系统设计和发展的必然需求,其涉及 Web 服务的发布及消费,今天我们先讨论如何在 Spring Boot 应用程序中发布 Web 服务。原创 2023-04-09 17:23:17 · 315 阅读 · 0 评论 -
Springboot实战10 ORM 集成:如何使用 Spring Data JPA 访问关系型数据库?
从上面代码中我们发现,OrderJpaRepository 是一个继承了 JpaRepository 接口的空接口,基于 09 讲的介绍,我们知道 OrderJpaRepository 实际上已经具备了访问数据库的基本 CRUD 功能。原创 2023-04-09 17:22:37 · 479 阅读 · 0 评论 -
Springboot实战09 数据抽象:Spring Data 如何对数据访问过程进行统一抽象?
首先我们需要指定一些查询关键字,常见的关键字如下表所示:方法名衍生查询中查询关键字列表有了这些查询关键字后,在方法命名上我们还需要指定查询字段和一些限制性条件。例如,在前面的示例中,我们只是基于“fistName”和“lastName”这两个字段做查询。事实上,我们可以查询的内容非常多,下表列出了更多的方法名衍生查询示例,你可以参考下。方法名衍生查询示例在 Spring Data 中,方法名衍生查询的功能非常强大,上表中罗列的这些也只是全部功能中的一小部分而已。原创 2023-04-09 17:22:08 · 229 阅读 · 0 评论 -
Springboot实战08 数据访问:如何剖析 JdbcTemplate 数据访问实现原理?
首先,CallbackJdbcTemplate 不是一个抽象类。其次,execute 方法签名上传入的是一个 StatementCallback 对象,而具体的定制化处理是通过 Statement 传入到 Callback 对象中完成的,我们也可以认为是把原有需要子类抽象方法实现的功能转嫁到了 StatementCallback 对象上。原创 2023-04-09 17:20:38 · 167 阅读 · 0 评论 -
Springboot实战07 数据访问:如何使用 JdbcTemplate 访问关系型数据库?
06 讲我们详细介绍了 JDBC 规范的相关内容,JDBC 规范是 Java 领域中使用最广泛的数据访问标准,目前市面上主流的数据访问框架都是构建在 JDBC 规范之上。因为 JDBC 是偏底层的操作规范,所以关于如何使用 JDBC 规范进行关系型数据访问的实现方式有很多(区别在于对 JDBC 规范的封装程度不同),而在 Spring 中,同样提供了 JdbcTemplate 模板工具类实现数据访问,它简化了 JDBC 规范的使用方法,今天我们将围绕这个模板类展开讨论。原创 2023-04-08 08:45:13 · 212 阅读 · 0 评论 -
Springboot实战06 基础规范:如何理解 JDBC 关系型数据库访问规范?
从今天开始,我们将进入 Spring Boot 另一个核心技术体系的讨论,即数据访问技术体系。无论是互联网应用还是传统软件,对于任何一个系统而言,数据的存储和访问都是不可缺少的。数据访问层的构建可能会涉及多种不同形式的数据存储媒介,本课程关注的是最基础也是最常用的数据存储媒介,即关系型数据库,针对关系型数据库,Java 中应用最广泛的就是 JDBC 规范,今天我们将对这个经典规范展开讨论。原创 2023-04-08 08:41:33 · 111 阅读 · 0 评论 -
Springboot实战05 自动配置:如何正确理解 Spring Boot 自动配置实现原理?
通过前面几个课时内容的介绍,相信你对 Spring Boot 中的配置体系已经有了全面的了解。Spring Boot 中的配置体系是一套强大而复杂的体系,其中最基础、最核心的要数自动配置(AutoConfiguration)机制了。今天我们将围绕这个话题详细展开讨论,看看 Spring Boot 如何实现自动配置。那我们就先从 @SpringBootApplication 注解开始讲起。原创 2023-04-08 08:38:17 · 222 阅读 · 0 评论 -
Springboot实战04 定制配置:如何创建和管理自定义的配置信息?
在现实的开发过程中,面对纷繁复杂的应用场景,Spring Boot 所提供的内置配置信息并不一定能够完全满足开发的需求,这就需要开发人员创建并管理各种自定义的配置信息。例如,对于一个电商类应用场景,为了鼓励用户完成下单操作,我们希望每完成一个订单给就给到用户一定数量的积分。这里,我们设置了每个订单对应的积分为 10,那么应用程序该如何获取这个配置项的内容呢?通常有两种方法。原创 2023-04-08 08:39:28 · 258 阅读 · 0 评论 -
Springboot实战03 多维配置:如何使用 Spring Boot 中的配置体系?
配置体系是基于 Spring Boot 框架开发应用程序的基础,而自动配置也是该框架的核心功能之一。今天我将带领大家梳理使用 Spring Boot 配置体系的系统方法。我们先从创建和运行第一个 Web 应用程序开始吧。原创 2023-04-08 08:38:46 · 120 阅读 · 0 评论 -
Springboot实战02 案例驱动:如何剖析一个 Spring Web 应用程序?
在 01 讲中,我们提到 Spring 家族具备很多款开源框架,开发人员可以基于这些开发框架实现各种 Spring 应用程序。在 02 讲中,我们无意对所有这些 Spring 应用程序的类型和开发方式过多展开,而是主要集中在基于 Spring Boot 开发面向 Web 场景的服务,这也是互联网应用程序最常见的表现形式。在介绍基于 Spring Boot 的开发模式之前,让我们先将它与传统的 Spring MVC 进行简单对比。原创 2023-04-08 08:37:37 · 130 阅读 · 0 评论 -
Springboot实战01 家族生态:如何正确理解 Spring 家族的技术体系?
Spring 框架自 2003 年由 Rod Johnson 设计并实现以来,经历了多个重大版本的发展和演进,已经形成了一个庞大的家族式技术生态圈。目前,Spring 已经是 Java EE 领域最流行的开发框架,在全球各大企业中都得到了广泛应用。今天,我将通过一个课时的时间带领你梳理整个 Spring 家族中的技术体系,以及各种功能齐全的开发框架。让我们先来看一下 Spring 家族技术生态的全景图。原创 2023-04-08 08:33:52 · 378 阅读 · 0 评论 -
Springboot实战开篇词 从零开始:为什么要学习 Spring Boot?
你好,我是鉴湘,有 10 年以上大型 Java EE 和分布式系统构建和优化的经验,曾带领百人团队完成基于 Spring 家族技术体系的亿级用户规模互联网应用系统的建设工作,对基于 Spring 框架进行系统开发和维护有着丰富的实践经验。原创 2023-04-08 08:34:11 · 236 阅读 · 0 评论 -
spring响应式编程结束语 以终为始:响应式编程是一种银弹吗?
课程已经接近尾声了,不知道这 22 讲的内容对你帮助如何?最后这一节结束语,我将结合课程的内容,和你一起展望响应式编程未来的发展趋势,它到底能否成为一种“银弹”呢?原创 2023-04-02 09:14:02 · 191 阅读 · 0 评论 -
spring响应式编程22 测试集成:响应式 Web 应用程序如何进行测试?
上一讲,我们探讨了针对响应式系统的测试解决方案,也介绍了测试 Reactor 响应式流的系统方法。那么这一讲的内容仍然聚焦于此,我们来看看如何测试 Web 三层架构中的各层组件,即 Repository 层、Service 层和 Controller 层。与测试单纯的 Reactor 编程组件不同,Web 应用程序不同层的组件之间存在自上而下的依赖关系。因此,我们将从 Repository 层开始自下而上来开展测试工作,并将对这些组件的测试使用不同的方案和技术。原创 2023-04-02 09:15:51 · 402 阅读 · 0 评论 -
spring响应式编程21 测试方案:如何验证响应式编程组件的正确性?
作为整个课程最后一部分内容,从这一讲开始,我们将讨论响应式 Spring 所提供的测试解决方案。对于响应式系统而言,测试是一个难点。当一个应用程序中涉及数据层、服务层、Web 层以及各种外部服务之间的交互关系时,除了针对各层组件的独立测试之外,还需要充分引入集成测试来保证服务的正确性和稳定性。这一讲,我将帮助你梳理全栈响应式测试方案,并给出 Spring 中所提供的相关测试组件。原创 2023-04-02 09:12:36 · 259 阅读 · 0 评论 -
spring响应式编程20 消息消费:如何选择可用的高级开发技巧?
在前面的示例中,无论是消息发布还是消息消费,我们都使用了 Spring Cloud Stream 中默认提供的通道名“output”和“input”。显然,在有些场景下,为了更好地管理系统中存在的所有通道,为通道进行命名是一项最佳实践,这点对于消息消费的场景尤为重要。在接下来的内容中,针对消息消费的场景,我们将不再使用 Sink 组件默认提供的“input”通道,而是尝试通过自定义通道的方式来实现消息消费。原创 2023-04-02 09:14:07 · 253 阅读 · 0 评论 -
spring响应式编程19 消息发布:如何以响应式的编程方式发送消息?
想要发送事件,首先需要定义事件 AccountChangedEvent,包括事件类型、事件所对应的操作以及事件中包含的业务领域对象。AccountChangedEvent 类的定义如下所示。//事件类型 private String type;//事件所对应的操作(新增、更新和删除) private String operation;//事件对应的领域模型 private AccountMessage accountMessage;//省略 getter/setter }原创 2023-04-02 09:13:30 · 335 阅读 · 0 评论 -
spring响应式编程18 消息驱动:Spring Cloud Stream 如何为系统提升伸缩性?
请你回想一下我在“”中提到的,响应式宣言认为,响应式系统的价值在于提供了即时响应性、可维护性和扩展性,表现的形式是回弹性和弹性,而实现的手段则是消息驱动。今天,我们将讨论与消息驱动相关的话题,并引出 Spring 家族中另一个重要成员,即 Spring Cloud Stream。Spring Cloud Stream 专门用于构建低耦合的事件驱动架构,并提供了响应式编程组件。原创 2023-04-01 09:17:56 · 260 阅读 · 0 评论 -
spring响应式编程17 R2DBC:关系型数据库能具备响应式数据访问特性吗?
在“14 | 响应式全栈:响应式编程能为数据访问过程带来什么样的变化”中我们提到了全栈响应式编程的概念,知道了数据访问层同样需要处理响应式场景。而在日常开发过程中被广泛采用的关系型数据库,采用的都是非响应式的数据访问机制。那么,关系型数据库能否具备响应式数据访问特性呢?这就是这一讲将要探讨的话题。原创 2023-04-01 09:17:23 · 1467 阅读 · 0 评论 -
spring响应式编程16 Redis 集成:如何实现对 Redis 的响应式数据访问?
上一讲,我们介绍了 Spring Data MongoDB Reactive 组件,它是 Spring Data MongoDB 的响应式版本。今天我们要讨论的是 Spring Data Redis Reactive 组件,它专门针对 Redis 这款 NoSQL 数据库提供了响应式编程能力。原创 2023-04-01 09:15:42 · 2538 阅读 · 0 评论 -
spring响应式编程15 MongoDB 集成:如何在响应式应用中访问 NoSQL 数据库?
上一讲开始,我们进入了响应式数据访问这一模块的学习,并且引出了 Spring 家族中专门用于实现数据访问的 Spring Data 框架及其响应式版本。我们知道 Spring Data 支持多种响应式 Repository 用来构建全栈响应式编程模型,而 MongoDB 就是其中具有代表性的一种数据存储库。今天,我就将结合案例来给出 Reactive MongoDB 的使用方式。原创 2023-04-01 09:15:14 · 1201 阅读 · 0 评论 -
spring响应式编程14 响应式全栈:响应式编程能为数据访问过程带来什么样的变化?
从这一讲开始,我们就进入新的模块,讨论 Spring Boot 中另一个核心技术体系——数据访问。无论是传统软件还是互联网应用,对于任何一个系统而言,数据的存储和访问都是不可缺少的。而数据访问层的构建可能会涉及多种不同形式的数据存储媒介,包括传统的关系型数据库,也包含各种 NoSQL。今天这一讲我们先讨论响应式数据访问的模型,以及 Spring 框架所提供的支持。在今天的课程中,我将先引出全栈式响应式编程这一设计理念,在这一设计理念之下,需要解决的一大问题就是如何构建响应式数据访问。原创 2023-04-01 09:14:05 · 630 阅读 · 0 评论 -
spring响应式编程13 RSocket:一种新的高性能网络通信协议
前面几讲我们讨论了如何使用 WebFlux 构建响应式 Web 服务的实现方案。WebFlux 和 WebMVC 一样,都是基于 HTTP 协议实现请求-响应式的交互方式。这种交互方案很简单,但不够灵活,也无法应对所有的响应式应用场景。那么,有没有在网络协议层上提供更加丰富的交互方式呢?答案是肯定的,那就是我们今天要讨论的 RSocket 协议。这一讲,我将从 RSocket 协议的特性、交互模式以及与主流开发框架之间的集成等几个方面来和你讨论,相信学完之后,你就会发现。原创 2023-04-01 09:09:53 · 1494 阅读 · 1 评论 -
spring响应式编程12 WebClient:如何实现非阻塞式的跨服务远程调用?
在上一讲中,我已经带你在 ReactiveSpringCSS 案例系统中通过 WebFlux 创建了响应式 Web 服务,并给你留下了一道思考题:如何实现非阻塞式的跨服务调用?我们知道在 Spring 中存在一个功能强大的工具类 RestTemplate,专门用来实现基于 HTTP 协议的远程请求和响应处理。RestTemplate 的主要问题在于不支持响应式流规范,也就无法提供非阻塞式的流式操作。原创 2023-04-01 09:09:20 · 2469 阅读 · 0 评论 -
spring响应式编程11 WebFlux(下):如何使用函数式编程模型构建异步非阻塞服务?
上一讲,我们引入了 Spring 框架中专门用于构建响应式 Web 服务的 WebFlux 框架,同时我也给出了两种创建 RESTful 风格 HTTP 端点实现方法中的一种,即注解编程模型。今天,我将介绍另一种实现方法——如何使用函数式编程模型创建响应式 RESTful 服务,这种编程模型与传统的基于 Spring MVC 构建 RESTful 服务的方法有较大差别。原创 2023-04-01 09:10:52 · 995 阅读 · 0 评论 -
spring响应式编程10 WebFlux(上):如何使用注解编程模式构建异步非阻塞服务?
通过上一讲的介绍,我们已经明确了 Spring 家族中 WebFlux 组件诞生的背景和意义。作为一款新型的 Web 服务开发组件,WebFlux 一方面充分考虑了与原有 Spring MVC 在开发模式上的兼容性,开发人员仍然可以使用基于注解的编程方式来创建响应式 Web 服务;另一方面,WebFlux 也引入了基于函数式编程的全新开发模式。本讲和下一讲将分别对这两种开发模式展开讨论,今天的内容将先关注基于注解的编程模型。原创 2023-04-01 09:07:44 · 501 阅读 · 0 评论