zoukankan      html  css  js  c++  java
  • Aop 基础

    基础文献   

        https://blog.csdn.net/abcd898989/article/details/50809321

    简单Demo配置

      pom.xml

         <!-- AOP -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>

      主类上加上Aop注解

    //Aop代理
    @EnableAspectJAutoProxy(proxyTargetClass=true, exposeProxy = true)
    package com.cjcx.pay.aspect;
    
    import lombok.extern.slf4j.Slf4j;
    import org.aspectj.lang.JoinPoint;
    import org.aspectj.lang.Signature;
    import org.aspectj.lang.annotation.*;
    import org.springframework.stereotype.Component;
    
    import java.util.Arrays;
    
    @Slf4j
    @Aspect
    @Component
    public class ServiceMonitor {
    
        /**
         * 前置通知:目标方法执行之前执行以下方法体的内容
         *
         * @param joinPoint
         */
        @Before("execution(* com..*Service.demo(..))")
        public void Before(JoinPoint joinPoint) {
            log.info("Before Completed: " + joinPoint);
            log.info("joinPoint toString(): " + joinPoint.toString());
    
            Object obj = joinPoint.getThis();
            log.info("joinPoint getThis: " + obj);
    
            Object target = joinPoint.getTarget();
            log.info("joinPoint getTarget: " + target);
    
            Signature signature = joinPoint.getSignature();
            log.info("joinPoint getSignature: " + signature.toString());
            log.info("joinPoint signature getName: " + signature.getName());
            log.info("joinPoint signature getModifiers: " + signature.getModifiers());
            log.info("joinPoint signature getDeclaringType: " + signature.getDeclaringType());
            log.info("joinPoint signature getDeclaringTypeName: " + signature.getDeclaringTypeName());
            log.info("joinPoint getArgs: " + Arrays.asList(joinPoint.getArgs()));
        }
    
    
        /**
         * 后置通知:目标方法执行之后执行以下方法体的内容,不管是否发生异常。
         *
         * @param joinPoint
         */
        @After("execution(* com..*Service.demo(..))")
        public void After(JoinPoint joinPoint) {
            log.info("After Completed: " + joinPoint);
        }
    
        /**
         * 返回通知:目标方法正常执行完毕时执行以下代码
         *
         * @param joinPoint
         */
        @AfterReturning(value = "execution(* com..*Service.demo(..))", returning = "result")
        public void AfterReturning(JoinPoint joinPoint, Object result) {
            log.info("AfterReturning Completed: " + joinPoint);
            log.info("AfterReturning returning result" + result);
        }
    
    
        /**
         * 异常通知:目标方法发生异常的时候执行以下代码
         *
         * @param joinPoint
         */
        @AfterThrowing(value = "execution(* com..*Service.demo(..))", throwing = "e")
        public void AfterThrowing(JoinPoint joinPoint, Exception e) {
            log.info("AfterThrowing Completed: " + joinPoint);
            log.info("AfterThrowing Exception: " + e.getMessage());
        }
    
        /**
         * 环绕通知:目标方法执行前后分别执行一些代码,发生异常的时候执行另外一些代码
         *
         * @param jp
         */
        /*@Around("execution(* com..*Service.demo(..))")
        public Object Around(ProceedingJoinPoint jp) {
            log.info("Around Completed: " + jp);
            String methodName = jp.getSignature().getName();
            Object result = null;
            try {
                System.out.println("【环绕通知中的--->前置通知】:the method 【" + methodName + "】 begins with " + Arrays.asList(jp.getArgs()));
                //执行目标方法
                result = jp.proceed();
                System.out.println("【环绕通知中的--->返回通知】:the method 【" + methodName + "】 ends with " + result);
            } catch (Throwable e) {
                System.out.println("【环绕通知中的--->异常通知】:the method 【" + methodName + "】 occurs exception " + e);
            }
    
            System.out.println("【环绕通知中的--->后置通知】:-----------------end.----------------------");
            return result;
        }*/
    
    
    }
  • 相关阅读:
    java中tif转png
    HTTP服务器、WEB服务器、应用服务器
    word将编号转成普通文本
    浏览新闻常用单词
    手机端搜索的回车事件
    C#(winform)的label自动换行
    oracle for update wait 解析
    java8 新特性parallelStream 修改默认多线程数量
    ArcObjects您必须有许可证才能使用此ActiveX控件
    图灵社区电子书 全高清可编辑 内含多种格式 [珍藏]
  • 原文地址:https://www.cnblogs.com/eason-d/p/9604042.html
Copyright © 2011-2022 走看看