第 5 章 Spring Boot中的AOP

在 Java 中,我们的主要思想是面向对象编程(Object Oriented Programming,OOP)。在 OOP 中,引入封装、继承、多态三大特性,建立一种对象层次关系,这也是一种纵向的关系。然而在一些环境下 OOP 仍然存在不足之处,日志功能就是经典的例子,日志代码往往散布在所有对象的层次中,且与核心业务没有关系,这种情况造成了大量代码的重复问题。

是否有好的方法解决这种问题?这时有了面向切面编程(Aspect Oriented Programming,AOP)。它能够建立一种横向关系,对业务类使用横切技术剖解,将影响多个类的公共方法抽象出来,留下业务核心方法,这样将业务类的关注点变成了核心关注点与横切关注点。在程序运行到业务类时,将横切方法织入,通俗地讲,可以理解为拦截器,拦截使用 AOP 的类中的方法,然后增强这个方法,在增强的时候,将抽象出来的方法增强进去。