竹简文档
切面处理

切面概览

基于 Spring AOP 的日志记录、调试保护等横切关注点处理

切面概览

bamboo-base-java 提供基于 Spring AOP 的切面处理器,用于处理日志记录、调试保护等横切关注点。

切面列表

切面职责自动注册
LogAspectHandler日志切面,记录请求参数、返回值和执行耗时
DebugAspectHandler调试切面,控制调试接口的访问权限

MVC vs WebFlux 对比

对比项MVC 版本WebFlux 版本
日志切点Controller + Service + Repository仅 Controller
响应式支持支持 Mono/Flux 返回类型
调试检查方式仅同步同步 + 响应式

LogAspectHandler

日志切面拦截 Controller、Service 和 Repository 三层的方法调用,记录请求参数、返回值和执行耗时。

切点定义

注解说明日志级别
@Controller / @RestControllerHTTP 请求处理方法INFO
@Service业务逻辑方法DEBUG
@Repository数据访问方法INFO

日志输出示例

Controller 层:

[INFO] [HTTP] >> GET /api/v1/user/1
[INFO] [HTTP] >> Headers: {Authorization: Bearer ***}
[INFO] [HTTP] >> Parameters: {id: 1}
[INFO] [HTTP] << 200 OK (15ms)

Service 层:

[DEBUG] [SERVICE] UserService.getUserById(id=1)
[DEBUG] [SERVICE] UserService.getUserById -> UserVO{id=1, username='test'}

Repository 层:

[INFO] [DAO] UserMapper.selectById(1) -> completed in 3ms

DebugAspectHandler

调试切面用于保护调试专用的 Controller 接口。当应用运行在非调试模式时,该切面将拦截对调试接口的访问并抛出异常。

使用方式

DebugController.java
@RestController
@RequestMapping("/debug")
@RequiredArgsConstructor
public class DebugController {

    private final DebugAspectHandler debugAspectHandler;

    @GetMapping("/cache/clear")
    public ResponseEntity<BaseResponse<Void>> clearCache() {
        // 非调试模式下将返回 401 Unauthorized
        debugAspectHandler.checkDebugController();

        cacheService.clearAll();
        return ResultUtil.success("缓存已清除");
    }
}

调试模式配置

application.yml
# 开发环境
spring:
  profiles:
    active: dev

# 调试模式开关
bamboo:
  debug:
    enabled: true

下一步

On this page