Spring Bean 的生命周期
"讲一讲 Spring Bean 的生命周期",这算是一道非常经典的面试题了! 如果没有研究过 Spring 源码,单纯去背面试题,这个问题也是可以回答出来的,但是单纯的背缺乏理解,而且面试一紧张,就容易背岔了。 在前面的文章中,给大家分析了 Spring 中 Bean 的创建是在 `createBean` 方法中完成的。在该方法中,真正干活的实际上是 ...
"讲一讲 Spring Bean 的生命周期",这算是一道非常经典的面试题了! 如果没有研究过 Spring 源码,单纯去背面试题,这个问题也是可以回答出来的,但是单纯的背缺乏理解,而且面试一紧张,就容易背岔了。 在前面的文章中,给大家分析了 Spring 中 Bean 的创建是在 `createBean` 方法中完成的。在该方法中,真正干活的实际上是 ...
1、概览 {#1概览} ----------- 本文将带你了解 [Spring](/spring/) 中的 **Profile** (配置文件),这是 Spring 的核心功能之一。可以把 Bean 配置在不同的 Profile,例如:*dev* 、*test* 、*prod*。然后,可以在不同的环境中激活指定的 Profile,以便只加载当前环境所需的 Bean。 2、在...
1、概览 {#1概览} ----------- SpEL 是 Spring Expression Language(Spring 表达式语言)的缩写,它是一种强大的工具,能显著增强与 Spring 的交互,并为配置、属性设置和查询操作提供额外的抽象。 本文将带你了解如何使用该工具使自定义查询更具动态性,通过 `@Query` 注解,可以使用 *JPQL* 或原生 *SQL*...
1、概览 {#1概览} ----------- 本文将带你了解如何使用 Spring `@Scheduled` 注解来配置和调度定时任务。 使用 `@Scheduled` 对方法进行注解时,需要遵循如下简单的规则: * 方法的返回类型通常应为 `void`(如果不是,返回值将被忽略) * 方法不应有任何参数 2、启用定时调度 {#2启用定时调度} -----------...
1、概览 {#1概览} ----------- 本文将地带你了解如何在 [Spring](/spring/) 中为 REST API 实现异常处理。 在 Spring 3.2 之前,在 Spring MVC 应用中处理异常的两种主要方法是 `HandlerExceptionResolver` 或 `@ExceptionHandler` 注解。这两种方法都有一些明显的缺点。 ...
1、概览 {#1概览} ----------- 本文介绍了如何在 [Spring Security](/spring-security/) 中检索当前用户详细信息。 2、从 Bean 中获取用户 {#2从-bean-中获取用户} ------------------------------- 检索当前已通过身份认证用户(`Principal`)的最简单方式是调用 `Sec...
完整的请求日志对于 **故障排查** 和 **审计** 来说极其重要。通过查看日志,可以检查数据的准确性、参数的传递方式以及服务器返回的数据。 由于 Socket 流不能重读,所以需要一种实现来把读取和写入的数据缓存起来,并且可以多次重复读取缓存的内容。 Spring 提供 2 个可重复读取请求、响应的 Wrapper 工具类: * `ContentCachingRequ...
1、概览 {#1概览} ----------- 本文将带你了解 [Spring Boot](/spring-boot/) 应用中的日志配置。 2、初始设置 {#2初始设置} --------------- 通过 [Spring Initializr](https://start.springboot.io/) 初始化一个 Spring Boot 应用: 创建唯一的类 `...
1、概览 {#1概览} ----------- 本文将带你了解如何在 [Spring Boot](/spring-boot/) 中使用 H2 内存数据库。与其他数据库一样,Spring Boot 生态系统对 H2 提供了开箱即用的支持。 2、依赖 {#2依赖} ----------- 添加 [h2](https://mvnrepository.com/artifact/c...
1、概览 {#1概览} ----------- 本文将带你了解如何在 UI (前端)应用中使用 Zuul 作为代理与 Spring REST 服务通信,使用 Zuul 代理的目的是为了统一处理 **CORS** 和 **Same Origin Policy** 问题。 Zuul 是 Netflix 基于 JVM 的路由和服务器端负载均衡器。Spring Cloud 与嵌入式...