Spring使用的AOP注解分为三个层次:
前提条件是在xml中放开了<aop:aspectj-autoproxy proxy-target-class="true"/><!-- 开启切面编程功能 -->
1、@Aspect放在类头上,把这个类作为一个切面。
2、 @Pointcut放在方法头上,定义一个可被别的方法引用的切入点表达式。
3、5种通知。
3.1、@Before,前置通知,放在方法头上。
3.2、@After,后置【finally】通知,放在方法头上。
3.3、@AfterReturning,后置【try】通知,放在方法头上,使用returning来引用方法返回值。
3.4、@AfterThrowing,后置【catch】通知,放在方法头上,使用throwing来引用抛出的异常。
3.5、@Around,环绕通知,放在方法头上,这个方法要决定真实的方法是否执行,而且必须有返回值。
@Component @Aspect public class LogAspect { /** * 定义Pointcut,Pointcut的名称 就是simplePointcut,此方法不能有返回值,该方法只是一个标示 */ @Pointcut("execution(public * com.service.impl..*.*(..))") public void recordLog() { } @AfterReturning(pointcut = "recordLog()") public void simpleAdvice() { LogUtil.info("AOP后处理成功 "); } @Around("recordLog()") public Object aroundLogCalls(ProceedingJoinPoint jp) throws Throwable { LogUtil.info("正常运行"); return jp.proceed(); } @Before("recordLog()") public void before(JoinPoint jp) { String className = jp.getThis().toString(); String methodName = jp.getSignature().getName(); // 获得方法名 LogUtil.info("位于:" + className + "调用" + methodName + "()方法-开始!"); Object[] args = jp.getArgs(); // 获得参数列表 if (args.length <= 0) { LogUtil.info("====" + methodName + "方法没有参数"); } else { for (int i = 0; i < args.length; i++) { LogUtil.info("====参数 " + (i + 1) + ":" + args[i]); } } LogUtil.info("====================================="); } @AfterThrowing("recordLog()") public void catchInfo() { LogUtil.info("异常信息"); } @After("recordLog()") public void after(JoinPoint jp) { LogUtil.info("" + jp.getSignature().getName() + "()方法-结束!"); LogUtil.info("====================================="); } }
相关推荐
在 Spring AOP 中,使用 @Aspect 注解来标注切面类,而 @Around 注解则用于标注 autour Advice,即环绕通知。Around Advice 是一种特殊类型的 Advice,它可以在目标方法的前后执行代码,从而实现对目标方法的拦截和...
在Spring AOP中,@Aspect注解用于定义一个切面,它是面向切面编程的核心组件。这篇文章主要探讨了@Aspect的高级用法,包括切点复合运算、切点命名、织入顺序以及如何获取连接点信息。 1. 切点复合运算: 切点...
标题 "aop:aspect" 指的是在Spring框架中使用AOP(面向切面编程)的一个关键元素,即切面(Aspect)。AOP是一种编程范式,它允许程序员将关注点逻辑(如日志、事务管理等)与业务逻辑分离,实现代码的模块化和复用。...
总结来说,Spring AOP性能监控器通过切面编程实现了对目标方法的无侵入性监控,通过自定义注解、切面类以及配置,我们可以轻松地记录和分析应用程序的性能数据。结合源码学习,可以提升对Spring AOP机制的深入理解。
在Java开发中,AOP(面向切面编程)是一种强大的编程范式,它允许程序员将关注点从核心业务逻辑中分离出来,如日志记录、事务管理、性能监控等。AOP通过“切面”这一概念,使得这些关注点可以模块化并独立于主要的...
在IT行业中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许程序员在不改变原有代码结构的情况下,插入新的功能,比如日志记录、性能监控等。本文将深入探讨如何使用AOP来实现...
在Spring中,我们可以使用AspectJ来实现AOP,AspectJ是一个强大的AOP框架,它可以与Spring无缝集成,提供更细粒度的控制。 首先,让我们了解一下AOP中的通知类型: 1. **前置通知**(Before Advice):在目标方法...
Spring AOP(面向切面编程)是Spring框架中的一个重要组件,它允许我们在不修改源代码的情况下,通过在程序运行时动态地将代码插入到方法调用中,来实现跨切面的关注点,如日志记录、性能监控、事务管理等。...
- Spring AOP支持使用`@Aspect`注解声明切面,`@Before`, `@After`, `@Around`, `@AfterReturning`, `@AfterThrowing`注解用于声明不同的通知类型,这些注解可以指定切入点表达式,并在匹配的方法执行时应用通知。...
在Spring MVC中,AOP(面向切面编程)是一种强大的工具,可以让我们在不修改代码的情况下,对程序的特定部分进行增强,例如日志记录、事务管理或性能监控。在这个场景中,我们将讨论如何利用AOP来实现Controller的...
面向切面编程(Aspect-Oriented Programming,简称AOP)是软件开发中的一个重要概念,它旨在解决程序中的横切关注点,即那些跨越多个模块、类或方法的共同功能,如日志、事务管理、性能监控等。AOP的核心思想是将...
在Java开发中,AOP通常用于日志记录、事务管理、性能监控等横切关注点。Spring框架是实现AOP的一个流行工具,它提供了两种主要的AOP实现方式:基于代理的AOP(Proxy-based AOP)和基于注解的AOP(Annotation-based ...
在这里,`@Before`和`@After`注解中的表达式定义了切入点,`joinPoint`参数提供了关于切入点的信息,如执行方法、参数等。 ### 对比与选择 XML配置方式更适用于传统的Spring应用,它提供了更多的灵活性,如动态...
3. 注解和反射(Reflection):在本例中,使用了("@Aspect"注解来标记LogTimeAspect类为一个切面, "@Around"注解定义了一个环绕通知(advice),环绕通知可以在目标方法执行前后提供自定义的行为,通过反射获取目标...
3. **连接点(Join Point)**:连接点是程序执行过程中的一个特定点,如方法的调用或异常的抛出。 4. **切入点(Pointcut)**:切入点是匹配连接点的规范,用于定义通知何时应被执行。 5. **织入(Weaving)**:织...
为了解决这一问题,可以利用Spring框架中的AOP(Aspect Oriented Programming,面向切面编程)技术来实现。 #### 二、Spring AOP 概述 Spring AOP 是Spring框架提供的一种实现AOP的方法。通过AOP,开发者可以在不...
在该类中定义一个`@Before`通知方法,如`logBefore()`,该方法会在目标方法执行前被调用,用于打印日志。切点表达式可以定义为匹配我们想监控的方法。例如,如果我们要在所有`Service`层的方法执行前记录日志,切点...
AspectJ RT包含了一些核心类,如`org.aspectj.lang.JoinPoint`,用于表示程序执行的特定点,以及`org.aspectj.lang.Signature`,表示方法或构造函数的签名。 3. **aspectjweaver-1.8.10.jar**:这是AspectJ的编织器...
在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,用于处理系统中的横切关注点,如日志记录、事务管理、性能监控等。这个“spring AOP拦截方法小示例”是一个实际应用,展示了如何使用Spring AOP来拦截...
在Java开发领域,Spring框架以其强大的功能和灵活性深受开发者喜爱,而Spring AOP(面向切面编程)则是Spring框架中的一个重要组成部分。AOP允许开发者定义“切面”,它是一种将关注点分离的方式,使得我们可以把...