Spring Bean 循环依赖
1、背景 {#1背景} ----------- 有好几次线上发布老应用时,遭遇代码启动报错,具体错误如下: ```txt Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'xxxManageF...
1、背景 {#1背景} ----------- 有好几次线上发布老应用时,遭遇代码启动报错,具体错误如下: ```txt Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'xxxManageF...
1、概览 {#1概览} ----------- 在 Spring Boot 应用中,一般使用 `RestTemplate` 来执行同步 HTTP 请求。数据通常以 JSON 的形式返回,而 `RestTemplate` 可以进行自动转换。 本文将带你了解,如何在 `RestTemplate` 中把响应的 JSON 数组转换为 Object 数组、POJO 数组和 POJO ...
1、概览 {#1概览} ----------- 本文将带你学习如何使用 Spring 4 中引入的 WebSocket 功能来实现一个简单的聊天应用。 WebSockets 是 Web 浏览器和服务器之间的一种双向、全双工、持久连接。一旦建立了 WebSocket 连接,该连接就会一直打开,直到客户端或服务器关闭该连接。 2、Maven 依赖 {#2maven-依赖} -...
1、概览 {#1概览} ----------- 本文将带你了解如何在 Spring WebSockets 中使用 `@SendToUser` 注解向特定 Session 或特定用户发送消息。 有关上述 Spring WebSockets 的介绍,请参阅 [上一篇文章](/websockets-spring/)。 2、WebSocket 配置 {#2websocket-配置...
1、概览 {#1概览} ----------- 本文将带你了解如何在 [Spring Boot](/spring-boot/) 中实现定时地往浏览器推送 WebSockets 消息。 > 另一种方法是使用服务器发送事件 (SSE),但本文不涉及这一点。 Spring 提供了多种调度方式。如 `@Scheduled` 注解,以及 Project Reactor 提供的 ...
在 Spring Boot 应用中,默认使用 `Logback` 来记录日志。可以在 `application.yaml` 或者是 `logback-spring.xml` 中配置 Logger 的日志级别。 有以下几个常见的日志级别(从低到高): * `TRACE`(跟踪):最低级别的日志,用于输出详细的调试信息,通常用于追踪代码的执行路径。 * `DEBUG`(调试):...
1、概览 {#1概览} ----------- 本文将带你深入了解 [Spring Batch](/spring-batch/)。它是一个批处理框架,专为执行批处理作业而设计。 当前的 5.0.0 版本支持 Spring 6 和 Java 17。 2、工作流基础 {#2工作流基础} ----------------- Spring Batch 遵循传统的批处理架构,其中...
1、概览 {#1概览} ----------- [Spring Batch](/spring-batch/) 是一个强大的批处理框架,可用于开发健壮的批处理应用。 [上一篇教程](/introduction-to-spring-batch/) 介绍了 Spring Batch,本文将在此基础上带你了解如何使用 Spring Boot 设置和创建一个基本的批处理驱动应用。 ...
1、概览 {#1概览} ----------- 有时,我们会通过异步的方式来提高应用的性能和响应能力。但是也需要考虑到偶尔故障的情况,如网络问题。此时,我们可以通过重试机制来重新调用。 本文将带你了解 Spring 对异步(async)和重试(retry)操作的支持以及如何在 Spring 应用中实现带有自动重试功能的异步执行。 2、Spring Boot 示例应用 {#...
1、概览 {#1概览} ----------- 本文将带你了解如何在 HTTP 请求到达 Spring Boot 应用的 Controller 之前对其进行修改。Web 应用和 RESTful Web 服务经常使用这种方式来解决常见问题,例如在传入的 HTTP 请求到达实际 Controller 之前对其进行转换或过滤。这促进了松散耦合,大大减少了开发工作量。 2、使用 F...