AOP基础-快速入门

AOP概述

  • AOP:Aspect Oriented Programming(面向切面编程),其实就是面向特定方法编程
  • 场景:
    • 案例部分功能运行比较慢,定位执行耗时较长的业务方法,此时需要统计每一个业务方法的执行耗时。
  • 实现:
    • 动态代理是面向切面编程最主流的实现。而SpringAOP是Spring框架的高级技术,目的在管理Bean对象的过程中,主要通过底层的动态代理机制,对特定的方法进行编程。

Spring AOP快速入门

  • 案例需求

    • 统计各个业务层方法执行耗时
  • 步骤

    • 导入依赖:在pom.xml中导入AOP的依赖
      • <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        
    • 编写AOP程序:针对特定方法根据业务需要进行编写
      • package com.example.tlias.AOP;
        
        import lombok.extern.slf4j.Slf4j;
        import org.aspectj.lang.ProceedingJoinPoint;
        import org.aspectj.lang.annotation.Around;
        import org.aspectj.lang.annotation.Aspect;
        import org.springframework.stereotype.Component;
        
        @Slf4j
        @Component // todo 将当前对象交给IOC容器管理,成为bean对象
        @Aspect // todo 表示当前类为AOP类
        public class TimeAspect {
            @Around("execution(* com.example.tlias.service.*.*(..))")  // todo 切入点表达式定义了哪些方法会被切入并执行切面逻辑
            public Object recordTime(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
                // 1.记录开始时间
                long begin = System.currentTimeMillis();
                // 2.调用原始方法运行
                Object result = proceedingJoinPoint.proceed();
                // 3.记录结束时间,计算方法执行耗时
                long end = System.currentTimeMillis();
                log.info("{}方法执行耗时:{}ms", proceedingJoinPoint.getSignature(), end - begin);
                return result;
            }
        }
        

AOP使用场景

  • 记录操作日志
  • 权限控制
  • 事务管理

优势

  • 代码无入侵:不同在特定方法中增加代码
  • 减少重复代码:同一个AOP类可以适用于多种同类方法
  • 提高开发效率
  • 维护方便:构建的AOP逻辑需要改变,只需要改变AOP类中的代码逻辑即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值