zoukankan      html  css  js  c++  java
  • aop实现接口切面统一处理

    
    import java.util.Arrays;
    
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.aspectj.lang.JoinPoint;
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.AfterReturning;
    import org.aspectj.lang.annotation.AfterThrowing;
    import org.aspectj.lang.annotation.Around;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    import org.aspectj.lang.annotation.Pointcut;
    import org.springframework.core.annotation.Order;
    import org.springframework.stereotype.Component;
    
    @Aspect
    @Component
    public class LoggingAspect
    {
        private Log log = LogFactory.getLog(this.getClass());
    
        @Pointcut("execution(* com.abc.xyz.content.service..*(..))")
        protected void loggingOperation()
        {
        }
    
        @Before("loggingOperation()")
        @Order(1)
        public void logJoinPoint(JoinPoint joinPoint)
        {
        log.info("Signature declaring type : " + joinPoint.getSignature().getDeclaringTypeName());
        log.info("Signature name : " + joinPoint.getSignature().getName());
        log.info("Arguments : " + Arrays.toString(joinPoint.getArgs()));
        log.info("Target class : " + joinPoint.getTarget().getClass().getName());
        }
    
        @AfterReturning(pointcut = "loggingOperation()", returning = "result")
        @Order(2)
        public void logAfter(JoinPoint joinPoint, Object result)
        {
        log.info("Exiting from Method :" + joinPoint.getSignature().getName());
        log.info("Return value :" + result);
        }
    
        @AfterThrowing(pointcut = "execution(* com.abc.xyz.content.service..*(..))", throwing = "e")
        @Order(3)
        public void logAfterThrowing(JoinPoint joinPoint, Throwable e)
        {
        log.error("An exception has been thrown in " + joinPoint.getSignature().getName() + "()");
        log.error("Cause :" + e.getCause());
        }
    
        @Around("execution(* com.abc.xyz.content.service..*(..))")
        @Order(4)
        public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable
        {
        log.info("The method " + joinPoint.getSignature().getName() + "() begins with " + Arrays.toString(joinPoint.getArgs()));
        try
        {
            Object result = joinPoint.proceed();
            log.info("The method " + joinPoint.getSignature().getName() + "() ends with " + result);
            return result;
        }
        catch (IllegalArgumentException e)
        {
            log.error("Illegal argument " + Arrays.toString(joinPoint.getArgs()) + " in " + joinPoint.getSignature().getName() + "()");
            throw e;
        }
        }
    
    }
    

     

  • 相关阅读:
    EF框架学习
    JS DOM---Chapter 1-4
    ASP.NET页面运行机制以及请求处理流程
    cookie 与 session
    C#中的委托delegate 与 事件 event
    【转】属性与字段的区别
    使用InternalsVisibleTo给assembly添加“友元assembly”
    SQL Server 常用函数和日期操作
    C#中的get 和 set方法
    清晰易懂的Numpy入门教程
  • 原文地址:https://www.cnblogs.com/sunny-miss/p/12891535.html
Copyright © 2011-2022 走看看