AOP 是一种独立的编程范式,和 OOP(面向对象)并列,Spring AOP 只是它的一种实现(AspectJ 也是)。@Transactional 事务、日志、权限校验背后都是它。但"切面、切点、通知"这些词一直有点绕,这篇把 AOP 从头理清:它解决什么、核心概念是什么、底层怎么用动态代理实现。
一、解决什么问题:横切关注点散落各处 ​
看一段没有 AOP 的代码:
public void saveOrder(Order order) {
log.info("开始保存订单"); // 日志
