AOP(面向切面编程)
Spring AOP 模块提供拦截器来拦截一个应用程序,例如,当执行一个方法时,你可以在方法执行之前或之后添加额外的功能。
AOP 术语
项 | 描述 |
Aspect | 一个模块具有一组提供横切需求的 APIs。例如,一个日志模块为了记录日志将被 AOP 方面调用。应用程序可以拥有任意数量的方面,这取决于需求。 |
Join point | 是程序执行中的一个精确执行点,例如类中的一个方法。在实际的应用程序中,其中一个操作将使用 Spring AOP 框架。 |
Advice | 这是实际行动之前或之后执行的方法。这是在程序执行期间通过 Spring AOP 框架实际被调用的代码。 |
Pointcut | 这是一组一个或多个连接点,通知应该被执行。你可以使用表达式或模式指定切入点正如我们将在 AOP 的例子中看到的。 |
Introduction | 引用允许你添加新方法或属性到现有的类中。 |
Target object | 被一个或者多个方面所通知的对象,这个对象永远是一个被代理对象。也称为被通知对象。 |
Weaving | Weaving把方面连接到其它的应用程序类型或者对象上,并创建一个被通知的对象。这些可以在编译时,类加载时和运行时完成。 |
为什么要使用AOP
我来举个例子
假设我们有3根水管,要给他们安净水器,如图:
我们有两种安装方式,一种是一根水管上安一个:
一种是一共就安一个
很显然第二种方法更好,同理,如果我们对不同的代码进行相同的操作时,如果每一个代码都写一个,那么代码量会非常巨大,使用AOP就会把这些相同的代码封装到一起,节省代码量。
其他可以看:详解Spring框架AOP(面向切面编程)