开篇:不改原有代码就能加功能?
想象你买了一份生日礼物,已经包装好了。现在你想在外面再加一层彩带、一张贺卡、一个蝴蝶结——你不需要拆开礼物重新包装,只需要在外面"装饰"就行。
Spring AOP 做的就是这件事:不修改原有业务代码,就能给它加上日志、权限校验、事务管理等通用功能。 这些功能像"装饰"一样,横切在多个业务模块之上,所以叫"面向切面编程"(Aspect-Oriented Programming)。
AOP 是 OOP 的补充而非替代。OOP 按"类和对象"纵向组织代码,AOP 按"切面"横向抽取通用逻辑。两者配合,让代码既有结构,又不冗余。
大约 10 分钟