`
herryhaixiao
  • 浏览: 90102 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

AOP中的@Aspect用法,用于监控程序的执行方法

 
阅读更多

 

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实例(AOP 如此简单)@Aspect、@Around 注解方式配置

    在 Spring AOP 中,使用 @Aspect 注解来标注切面类,而 @Around 注解则用于标注 autour Advice,即环绕通知。Around Advice 是一种特殊类型的 Advice,它可以在目标方法的前后执行代码,从而实现对目标方法的拦截和...

    谈谈Spring AOP中@Aspect的高级用法示例

    在Spring AOP中,@Aspect注解用于定义一个切面,它是面向切面编程的核心组件。这篇文章主要探讨了@Aspect的高级用法,包括切点复合运算、切点命名、织入顺序以及如何获取连接点信息。 1. 切点复合运算: 切点...

    aop:aspect

    标题 "aop:aspect" 指的是在Spring框架中使用AOP(面向切面编程)的一个关键元素,即切面(Aspect)。AOP是一种编程范式,它允许程序员将关注点逻辑(如日志、事务管理等)与业务逻辑分离,实现代码的模块化和复用。...

    Spring aop 性能监控器

    总结来说,Spring AOP性能监控器通过切面编程实现了对目标方法的无侵入性监控,通过自定义注解、切面类以及配置,我们可以轻松地记录和分析应用程序的性能数据。结合源码学习,可以提升对Spring AOP机制的深入理解。

    aop,aspect相关jar包

    在Java开发中,AOP(面向切面编程)是一种强大的编程范式,它允许程序员将关注点从核心业务逻辑中分离出来,如日志记录、事务管理、性能监控等。AOP通过“切面”这一概念,使得这些关注点可以模块化并独立于主要的...

    使用AOP实现监控日志并保存

    在IT行业中,面向切面编程(Aspect Oriented Programming,简称AOP)是一种强大的设计模式,它允许程序员在不改变原有代码结构的情况下,插入新的功能,比如日志记录、性能监控等。本文将深入探讨如何使用AOP来实现...

    Spring 使用AspectJ 实现 AOP

    在Spring中,我们可以使用AspectJ来实现AOP,AspectJ是一个强大的AOP框架,它可以与Spring无缝集成,提供更细粒度的控制。 首先,让我们了解一下AOP中的通知类型: 1. **前置通知**(Before Advice):在目标方法...

    springAop与spring定时器

    Spring AOP(面向切面编程)是Spring框架中的一个重要组件,它允许我们在不修改源代码的情况下,通过在程序运行时动态地将代码插入到方法调用中,来实现跨切面的关注点,如日志记录、性能监控、事务管理等。...

    Spring Aop Advise方法(增强方法) 中获取目标方法的参数

    - Spring AOP支持使用`@Aspect`注解声明切面,`@Before`, `@After`, `@Around`, `@AfterReturning`, `@AfterThrowing`注解用于声明不同的通知类型,这些注解可以指定切入点表达式,并在匹配的方法执行时应用通知。...

    springMVC AOP拦截拦截Controller等实现日志管理

    在Spring MVC中,AOP(面向切面编程)是一种强大的工具,可以让我们在不修改代码的情况下,对程序的特定部分进行增强,例如日志记录、事务管理或性能监控。在这个场景中,我们将讨论如何利用AOP来实现Controller的...

    aop@work.rar

    面向切面编程(Aspect-Oriented Programming,简称AOP)是软件开发中的一个重要概念,它旨在解决程序中的横切关注点,即那些跨越多个模块、类或方法的共同功能,如日志、事务管理、性能监控等。AOP的核心思想是将...

    aop切面拦截单个方法实例

    在Java开发中,AOP通常用于日志记录、事务管理、性能监控等横切关注点。Spring框架是实现AOP的一个流行工具,它提供了两种主要的AOP实现方式:基于代理的AOP(Proxy-based AOP)和基于注解的AOP(Annotation-based ...

    spring aspect 配置2种方式

    在这里,`@Before`和`@After`注解中的表达式定义了切入点,`joinPoint`参数提供了关于切入点的信息,如执行方法、参数等。 ### 对比与选择 XML配置方式更适用于传统的Spring应用,它提供了更多的灵活性,如动态...

    Aop记录执行时间.pdf

    3. 注解和反射(Reflection):在本例中,使用了("@Aspect"注解来标记LogTimeAspect类为一个切面, "@Around"注解定义了一个环绕通知(advice),环绕通知可以在目标方法执行前后提供自定义的行为,通过反射获取目标...

    Spring AOP 概念理解及@AspectJ支持

    3. **连接点(Join Point)**:连接点是程序执行过程中的一个特定点,如方法的调用或异常的抛出。 4. **切入点(Pointcut)**:切入点是匹配连接点的规范,用于定义通知何时应被执行。 5. **织入(Weaving)**:织...

    spring aop切面拦截指定类和方法实现流程日志跟踪

    为了解决这一问题,可以利用Spring框架中的AOP(Aspect Oriented Programming,面向切面编程)技术来实现。 #### 二、Spring AOP 概述 Spring AOP 是Spring框架提供的一种实现AOP的方法。通过AOP,开发者可以在不...

    springBoot+aop 简单demo

    在该类中定义一个`@Before`通知方法,如`logBefore()`,该方法会在目标方法执行前被调用,用于打印日志。切点表达式可以定义为匹配我们想监控的方法。例如,如果我们要在所有`Service`层的方法执行前记录日志,切点...

    aspect所需要的jar

    AspectJ RT包含了一些核心类,如`org.aspectj.lang.JoinPoint`,用于表示程序执行的特定点,以及`org.aspectj.lang.Signature`,表示方法或构造函数的签名。 3. **aspectjweaver-1.8.10.jar**:这是AspectJ的编织器...

    spring AOP拦截方法小示例

    在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,用于处理系统中的横切关注点,如日志记录、事务管理、性能监控等。这个“spring AOP拦截方法小示例”是一个实际应用,展示了如何使用Spring AOP来拦截...

    spring aop xml 实例

    在Java开发领域,Spring框架以其强大的功能和灵活性深受开发者喜爱,而Spring AOP(面向切面编程)则是Spring框架中的一个重要组成部分。AOP允许开发者定义“切面”,它是一种将关注点分离的方式,使得我们可以把...

Global site tag (gtag.js) - Google Analytics