Spring AOP AspectJ 注解示例17 Mar 2025 | 6 分钟阅读 Spring Framework 建议您使用 Spring AspectJ AOP 实现,而不是 Spring 1.2 旧式的基于 dtd 的 AOP 实现,因为它为您提供了更多控制,并且易于使用。 有两种方法可以使用 Spring AOP AspectJ 实现
要理解 aop 概念、其优势等,请访问此处 AOP 概念教程Spring AspectJ AOP 实现提供了许多注解
用于创建通知的注解如下所示
理解切点切点是 Spring AOP 的一种表达式语言。 @Pointcut 注解用于定义切点。我们也可以按名称引用切点表达式。让我们看看切点表达式的简单示例。 切点表达式的名称是 doSomething()。它将应用于 Operation 类中的所有方法,而与返回类型无关。 理解切点表达式让我们尝试通过下面给出的示例来理解切点表达式 它将应用于所有公共方法。 它将应用于 Operation 类的所有公共方法。 它将应用于 Operation 类的所有方法。 它将应用于 Employee 类的所有公共 setter 方法。 它将应用于返回 int 值的 Operation 类的所有方法。 1) @Before 示例AspectJ Before 通知在实际的业务逻辑方法之前应用。您可以在此处执行任何操作,例如转换、身份验证等。 创建一个包含实际业务逻辑的类。 文件:Operation.java现在,创建包含前置通知的切面类。 文件:TrackOperation.java现在,创建定义 bean 的 applicationContext.xml 文件。 文件:applicationContext.xml现在,让我们调用实际的方法。 文件:Test.java输出如您所见,在调用 msg()、m() 和 k() 方法之前打印了附加关注点。 现在,如果您更改切点表达式,如下所示 现在,附加关注点将应用于 Operation 类中以 m 开头的方法。 输出将如下所示 现在,您可以看到在调用 k() 方法之前没有打印附加关注点。 2) @After 示例AspectJ 后置通知在调用实际业务逻辑方法之后应用。它可以用于维护日志、安全性、通知等。 此处,我们假设 Operation.java、applicationContext.xml 和 Test.java 文件与 @Before 示例中给出的一样。 创建包含后置通知的切面类。 文件:TrackOperation.java输出您可以看到,在调用 msg()、m() 和 k() 方法之后打印了附加关注点。 3) @AfterReturning 示例通过使用返回后通知,我们可以在通知中获取结果。 创建包含业务逻辑的类。 文件:Operation.java创建包含返回后通知的切面类。 文件:TrackOperation.java文件:applicationContext.xml它与 @Before 通知示例中给出的一样 文件:Test.java现在,创建调用实际方法的 Test 类。 输出您可以看到返回值打印了两次,一次由 TrackOperation 类打印,另一次由 Test 类打印。 4) @Around 示例AspectJ 环绕通知在调用实际业务逻辑方法之前和之后应用。 此处,我们假设 applicationContext.xml 文件与 @Before 示例中给出的一样。 创建一个包含实际业务逻辑的类。 文件:Operation.java创建包含环绕通知的切面类。 您需要在通知方法中传递 PreceedingJoinPoint 引用,以便我们可以通过调用 proceed() 方法来继续该请求。 文件:TrackOperation.java文件:Test.java现在,创建调用实际方法的 Test 类。 输出您可以看到,在调用 msg() 和 display 方法之前和之后打印了附加关注点。 5) @AfterThrowing 示例通过使用抛出后通知,我们可以在 TrackOperation 类中打印异常。让我们看看 AspectJ AfterThrowing 通知的示例。 创建包含业务逻辑的类。 文件:Operation.java创建包含抛出后通知的切面类。 此处,我们还需要传递 Throwable 引用,以便我们可以在此处拦截异常。 文件:TrackOperation.java文件:applicationContext.xml它与 @Before 通知示例中给出的一样 文件:Test.java现在,创建调用实际方法的 Test 类。 输出 |
我们请求您订阅我们的新闻通讯以获取最新更新。