Spring Security - 角色和权限
1、概览 {#1概览} ----------- 本文将带你了解如何在 [Spring Security](/spring-security/) 中正确地实现 **角色(Role)** 和 **权限(Privilege)**。 2、用户、角色和权限 {#2用户角色和权限} ---------------------- 有如下 3 个实体: * `User`:代表用户 * ...
1、概览 {#1概览} ----------- 本文将带你了解如何在 [Spring Security](/spring-security/) 中正确地实现 **角色(Role)** 和 **权限(Privilege)**。 2、用户、角色和权限 {#2用户角色和权限} ---------------------- 有如下 3 个实体: * `User`:代表用户 * ...
说起 Spring 状态机,大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢?没错,Spring 状态机就是状态模式的一种实现,在介绍 Spring 状态机之前,让我们先来看看设计模式中的状态模式。 1、状态模式 {#1状态模式} --------------- 状态模式的定义如下: **状态模式(State Pattern)** 是一种行为型设计模式,它允许对...
"讲一讲 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 应用: 创建唯一的类 `...