📜  Spring AOP教程|面向方面的编程

📅  最后修改于: 2020-12-04 07:51:03             🧑  作者: Mango

Spring AOP教程

面向方面编程(AOP)从某种意义上说是对OOP的补充,因为它还提供了模块化的功能。但是模块化的关键单元是方面而不是课堂。

AOP将程序逻辑分为不同的部分(称为关注点)。它用于通过交叉关注来提高模块化。

横切关注点是可能影响整个应用程序的关注点,应尽可能集中在代码中的一个位置,例如事务管理,身份验证,日志记录,安全性等。

为什么要使用AOP?

它提供了一种可插入的方式,可以在实际逻辑之前,之后或周围动态添加其他关注点。假设一个类中有10个方法,如下所示:

class A{
public void m1(){...}
public void m2(){...}
public void m3(){...}
public void m4(){...}
public void m5(){...}
public void n1(){...}
public void n2(){...}
public void p1(){...}
public void p2(){...}
public void p3(){...}
}

从m开始有5种方法,从n开始有2种方法,从p开始有3种方法。

了解方案我必须维护日志并在调用从m开始的方法之后发送通知。

没有AOP的问题我们可以从以m开头的方法调用方法(维护日志并发送通知)。在这种情况下,我们需要用所有5种方法编写代码。

但是,如果客户以后说,我不必发送通知,则需要更改所有方法。这导致维护问题。

使用AOP的解决方案我们不必从方法中调用方法。现在,我们可以在类的方法中定义其他关注点,例如维护日志,发送通知等。它的条目在xml文件中给出。

将来,如果客户说要删除通知程序功能,我们只需要在xml文件中进行更改。因此,在AOP中维护很容易。

在哪里使用AOP?

AOP主要用于以下情况:

  • 提供声明性企业服务,例如声明性事务管理。
  • 它允许用户实现自定义方面。

AOP概念和术语

AOP的概念和术语如下:

  • 连接点
  • 忠告
  • 切入点
  • 介绍
  • 目标对象
  • 方面
  • 拦截器
  • AOP代理
  • 织造

连接点

连接点是程序中的任何点,例如方法执行,异常处理,字段访问等。Spring仅支持方法执行连接点。

忠告

建议表示方面在特定的连接点处采取的操作。有不同类型的建议:

  • 咨询前:它在连接点之前执行。
  • 返回建议后:在联合点正常完成后执行。
  • 抛出建议后:如果方法因抛出异常而退出,则执行该命令。
  • 之后(最终)建议:无论连接点退出是正常返回还是异常返回,它都会在连接点之后执行。
  • 围绕建议:它在连接点之前和之后执行。

切入点

它是AOP的一种表达语言,它与联接点匹配。

介绍

这意味着为类型引入其他方法和字段。它允许您将新接口引入任何建议对象。

目标对象

目的是通过一个或多个方面来建议。在春天,它也被称为代理对象,因为Spring AOP是使用运行时代理实现的。

方面

这是一个包含建议,连接点等的类。

拦截器

这个方面仅包含一个建议。

AOP代理

它用于实现由AOP框架创建的方面合同。在Spring框架中它将是JDK动态代理或CGLIB代理。

织造

这是将Aspect与其他应用程序类型或对象链接以创建建议对象的过程。编织可以在编译时,加载时或运行时完成。 Spring AOP在运行时执行编织。

AOP实施

AOP实现由以下方式提供:

  • 纵横比
  • SpringAOP
  • JBoss AOP

SpringAOP

Spring AOP可以通过以下三种方式使用。但是广泛使用的方法是Spring AspectJ注释样式。下面给出了使用Spring AOP的3种方法:

参考链接