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; } }
-
- 导入依赖:在pom.xml中导入AOP的依赖
AOP使用场景
- 记录操作日志
- 权限控制
- 事务管理
优势
- 代码无入侵:不同在特定方法中增加代码
- 减少重复代码:同一个AOP类可以适用于多种同类方法
- 提高开发效率
- 维护方便:构建的AOP逻辑需要改变,只需要改变AOP类中的代码逻辑即可
文章来源地址https://www.toymoban.com/news/detail-687686.html
文章来源:https://www.toymoban.com/news/detail-687686.html
到了这里,关于AOP基础-快速入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!