竹简文档
切面处理

业务日志切面

BusinessLogAspect 提供独立的业务日志记录方法,支持 Controller、Service 和 DAO 三层的日志前置处理

BusinessLogAspect

BusinessLogAspect 是一个独立的业务日志工具类,提供 Controller、Service 和 DAO 三层的日志前置处理方法。与 LogAspectHandler 基于 AOP 自动拦截不同,BusinessLogAspect 需要在业务代码中显式调用,适用于需要自定义日志行为的场景。

方法详解

字段

类型

使用示例

Controller 层

OrderController.java
@RestController
@RequestMapping("/api/v1/order")
@RequiredArgsConstructor
public class OrderController {

    private final BusinessLogAspect businessLogAspect;

    @PostMapping("/create")
    public ResponseEntity<BaseResponse<OrderVO>> createOrder(
            @RequestBody OrderDTO dto) {
        // 手动记录 Controller 层日志
        businessLogAspect.beforeControllerLog();

        OrderVO order = orderService.createOrder(dto);
        return ResultUtil.success("订单创建成功", order);
    }
}

Service 层

OrderService.java
@Service
@RequiredArgsConstructor
public class OrderService {

    private final BusinessLogAspect businessLogAspect;

    public OrderVO createOrder(OrderDTO dto) {
        // 手动记录 Service 层日志
        businessLogAspect.beforeServiceLog();

        // 业务逻辑...
        return orderVO;
    }
}

DAO 层

OrderRepository.java
@Repository
@RequiredArgsConstructor
public class OrderRepository {

    private final BusinessLogAspect businessLogAspect;

    public OrderEntity findByOrderNo(String orderNo) {
        // 手动记录 DAO 层日志
        businessLogAspect.beforeDaoLog();

        return orderMapper.selectByOrderNo(orderNo);
    }
}

与 LogAspectHandler 的对比

特性LogAspectHandlerBusinessLogAspect
触发方式AOP 自动拦截手动显式调用
覆盖范围全局生效按需使用
自定义程度固定格式可结合业务逻辑
适用场景通用日志记录特定业务流程的日志增强

注意事项

  • BusinessLogAspect 是一个独立的组件类,非 AOP 切面,不会自动拦截方法调用
  • 若项目已启用 LogAspectHandler(默认启用),通常不需要额外使用 BusinessLogAspect
  • 适合在 LogAspectHandler 无法满足需求时作为补充手段使用

下一步

On this page