zoukankan      html  css  js  c++  java
  • springBoot AOP切面编程

    AOP 为 Aspect Oriented Programming 的缩写,意为 面向切面编程。AOP 为spring 中的一个重要内容,它是通过对既有程序定义一个切入点,然后在其前后切入不同的执行内容。

    AOP 不会破坏原有程序的逻辑,很好的和业务逻辑进行隔离,耦合度低。

    常用比如AOP 的日志记录。

    1.pom加入AOP依赖包

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

    2.建立LogAspect 类,该类必须在 主程序的扫包范围内

    @Aspect
    @Component
    @Slf4j
    public class LogAspect {
    
        @Pointcut("execution(public * 扫包路径..*.*(..))")
        public void LogHelp() {
        }
    
        @Pointcut("execution(public * 扫包路径..*.*(..))")
        public void LogErrorHelp() {
        }
    
        @Before("LogHelp()")
        public void doBefore(JoinPoint joinPoint) throws Throwable {
            // 接收到请求,记录请求内容
            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = attributes.getRequest();
            // 记录下请求内容
            System.out.println("URL : " + request.getRequestURL().toString());
            System.out.println("HTTP_METHOD : " + request.getMethod());
            System.out.println("IP : " + request.getRemoteAddr());
            System.out.println("CLASS_METHOD : " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName());
            System.out.println("ARGS : " + Arrays.toString(joinPoint.getArgs()));
        }
    
        @AfterReturning(returning = "ret", pointcut = "LogHelp()")
        public void doAfterReturning(Object ret) throws Throwable {
            // 处理完请求,返回内容
            System.out.println("方法的返回值 : " + ret);
        }
    
        @AfterThrowing("LogErrorHelp()")
        public void doAfterThrowing(JoinPoint jp) {
            System.out.println("方法异常时执行.....");
            System.out.println(jp.toString());
        }
    }//end
    欢迎指正:haizi2014@qq.com
  • 相关阅读:
    多维数组和元组
    字符串
    列表
    JQuery事件的绑定
    JQuery设置缓慢下拉大行多次执行的解决办法,以及stop()函数的简单理解
    JQuery_AJAX简单笔记
    C#后台验证身份证号码的一个方法
    JQuery AJAX请求aspx后台方法
    网络编辑器插件ckeditor+ckfinder配置
    请编程实现:产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复(百度了一下,get一种高性能算法,非递归)
  • 原文地址:https://www.cnblogs.com/hcfan/p/9888413.html
Copyright © 2011-2022 走看看