Spring AOP AspectJ XML 配置示例

17 Mar 2025 | 6 分钟阅读

Spring 允许您在 xml 文件中定义方面、通知和切入点。

在上一页,我们已经看到了使用注解的 AOP 示例。现在我们将通过 xml 配置文件来查看相同的示例。

让我们看看用于定义通知的 xml 元素。

  1. aop:before 它在调用实际的业务逻辑方法之前应用。
  2. aop:after 它在调用实际的业务逻辑方法之后应用。
  3. aop:after-returning 它在调用实际的业务逻辑方法之后应用。它可用于拦截通知中的返回值。
  4. aop:around 它在调用实际的业务逻辑方法之前和之后应用。
  5. aop:after-throwing 如果实际的业务逻辑方法抛出异常,则应用。

要了解 AOP 概念、它的优势等,请访问此处 AOP 概念教程



1) aop:before 示例

AspectJ Before 通知在实际的业务逻辑方法之前应用。您可以在此处执行任何操作,例如转换、身份验证等。

创建一个包含实际业务逻辑的类。

文件: Operation.java

现在,创建包含 before 通知的方面类。

文件: TrackOperation.java

现在创建定义 bean 的 applicationContext.xml 文件。

文件:applicationContext.xml

现在,让我们调用实际的方法。

文件:Test.java

输出

正如您所看到的,在调用 msg()、m() 和 k() 方法之前打印了附加的关注点。


2) aop:after 示例

AspectJ after 通知在调用实际的业务逻辑方法之后应用。它可以用于维护日志、安全、通知等。

这里,我们假设 Operation.javaTrackOperation.javaTest.java 文件与 aop:before 示例中给出的相同。

现在创建定义 bean 的 applicationContext.xml 文件。

文件:applicationContext.xml

输出

您可以看到在调用 msg()、m() 和 k() 方法之后打印了附加的关注点。


3) aop:after-returning 示例

通过使用 after returning 通知,我们可以在通知中获取结果。

创建包含业务逻辑的类。

文件: Operation.java

创建包含 after returning 通知的方面类。

文件: TrackOperation.java
文件:applicationContext.xml
文件:Test.java

现在创建调用实际方法的 Test 类。

输出

您可以看到返回值打印了两次,一次由 TrackOperation 类打印,另一次由 Test 类打印。


4) aop:around 示例

AspectJ around 通知在调用实际的业务逻辑方法之前和之后应用。

创建一个包含实际业务逻辑的类。

文件: Operation.java

创建包含 around 通知的方面类。

您需要在通知方法中传递 PreceedingJoinPoint 引用,以便我们可以通过调用 proceed() 方法来继续请求。

文件: TrackOperation.java
文件:applicationContext.xml
文件:Test.java

现在创建调用实际方法的 Test 类。

输出

您可以看到在调用 msg() 和 display 方法之前和之后打印了附加的关注点。


5) aop:after-throwing 示例

通过使用 after throwing 通知,我们可以在 TrackOperation 类中打印异常。让我们看看 AspectJ AfterThrowing 通知的示例。

创建包含业务逻辑的类。

文件: Operation.java

创建包含 after throwing 通知的方面类。

这里,我们还需要传递 Throwable 引用,以便我们可以在此处拦截异常。

文件: TrackOperation.java
文件:applicationContext.xml
文件:Test.java

现在创建调用实际方法的 Test 类。

输出