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:解决横向横切关注点抽取
要点总结
- AOP全称Aspect-Oriented Programming,即面向切面编程
- 核心目的是分离横切关注点,提高代码模块化
- AOP是OOP的补充,两者配合使用
- 常见应用场景:日志、事务、权限、缓存等
📝 发现内容有误?点击此处直接编辑