加载中...

面向切面编程(Aspect-Oriented Programming,AOP)是一种编程范式,由施乐帕克研究中心的 Gregor Kiczales 团队于 1997 年提出:把日志、事务、权限、缓存这类散布在众多模块中的横切关注点(cross-cutting concerns)从业务代码中分离出来,封装为切面(Aspect)统一管理。
连接点(Join Point)是程序执行中可插入的点(如方法调用);切点(Pointcut)用表达式选中一组连接点;通知(Advice)是在切点前后或环绕执行的逻辑;织入(Weaving)指把切面应用到目标代码,可在编译期(AspectJ)、类加载期或运行期(动态代理)完成。
AspectJ 是最完整的实现;Spring AOP 基于动态代理,支撑了声明式事务 @Transactional 等核心特性。
优点是业务代码干净、横切逻辑集中可复用;缺点是控制流被隐式改变,过度使用会让行为难以追踪调试。

登录 后参与讨论
暂无讨论,来发表第一条评论吧