全部学科
Python全栈
python
NodeJS全栈
nodejs
📅 2026-05-18 5 分钟 ✍️ juanwangdev

AOP概念

AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,用于解决横切关注点的代码分散问题。

核心定义

AOP通过切面将横切关注点(如日志、事务、安全)从业务逻辑中分离出来,实现关注点分离。

解决的问题

传统OOP中,横切关注点代码散落在多个模块中:

Java
// 业务方法中混杂日志、事务等代码
public void transfer() {
    log.info("开始转账");        // 日志代码
    transaction.begin();          // 事务代码
    try {
        // 核心业务逻辑
        accountService.debit();
        accountService.credit();
        transaction.commit();     // 事务代码
    } catch (Exception e) {
        transaction.rollback();   // 事务代码
        log.error("转账失败");     // 日志代码
    }
    log.info("转账完成");         // 日志代码
}

AOP将这些横切代码抽取为独立切面:

Java
// 业务方法只关注核心逻辑
public void transfer() {
    accountService.debit();
    accountService.credit();
}

核心思想

特性说明
分离关注点横切逻辑与业务逻辑解耦
声明式编程通过配置或注解声明切面
非侵入式不修改原有业务代码

与OOP的关系

AOP是OOP的补充,而非替代:

  • OOP:解决纵向业务逻辑划分
  • AOP:解决横向横切关注点抽取

要点总结

  1. AOP全称Aspect-Oriented Programming,即面向切面编程
  2. 核心目的是分离横切关注点,提高代码模块化
  3. AOP是OOP的补充,两者配合使用
  4. 常见应用场景:日志、事务、权限、缓存等
想在手机上练习这篇文章的配套题目?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一篇 Bean的别名
下一篇 → AOP术语
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码