AOP-总结

AOP通过对逻辑的切入,在方法执行前后 对方法进行 修饰,包装,以及利用,可以达到很多效果(自己理解)

举例

模板化的业务逻辑(事务)

  1. 获取数据库连接
  2. 设置非自动提交
  3. 执行 SQL
  4. ==封装返回值==
  5. 正常:提交
  6. 异常:回滚
  7. 关闭链接

模板化的业务逻辑(权限)(假设使用 @Role (“admin”) 注解)

  1. 拿到用户身份
  2. 拿到目标方法标注的所有注解
  3. ==判定是否为注解指定的身份用户==
  4. 是:执行目标方法
  5. 不是:记录非法请求

(AI)

AOP(面向切面编程)在项目中主要用于解决系统中具有横切性质的问题,通过将分散在各个业务逻辑中的共性功能抽取出来,实现代码复用和关注点分离。以下是 AOP 在项目中常见的应用场景:

  1. 日志记录

    无需在每个方法中手动编写日志代码,通过 AOP 可以统一拦截方法的调用,自动记录方法的入参、出参、执行时间、调用者信息等,便于系统调试和运维监控。

  2. 权限验证

    在接口调用前,通过 AOP 拦截请求,检查用户是否拥有访问权限(如登录状态、角色权限等),避免在每个接口中重复编写权限校验逻辑。

  3. 事务管理

    针对数据库操作,通过 AOP 在方法执行前开启事务,执行后根据结果提交或回滚事务,简化事务控制代码,确保数据一致性。

  4. 异常处理

    统一捕获方法执行过程中抛出的异常,进行标准化处理(如格式化错误信息、记录异常日志、返回友好提示等),减少代码中的 try-catch 冗余。

  5. 性能监控【这个有专业】

    通过 AOP 统计方法的执行时间、调用频率等指标,分析系统瓶颈,例如监控接口响应时间、数据库查询耗时等。

  6. 缓存处理

    在方法调用前检查缓存中是否存在结果,存在则直接返回缓存数据;方法执行后将结果存入缓存,减少重复计算或数据库访问。

  7. 数据校验

    对方法入参进行统一校验(如参数合法性、格式正确性),不符合规则时直接拦截并返回错误,避免在业务逻辑中分散校验代码。

  8. 分布式追踪

    在微服务架构中,通过 AOP 在请求入口生成追踪 ID,并在服务调用链中传递,结合日志实现全链路追踪,便于排查跨服务问题。

AOP 的核心价值在于解耦,让业务代码专注于核心逻辑,而将通用功能(如日志、权限)以切面的形式独立维护,提升代码的可维护性和扩展性。