目录
AOP基础 - 快速入门
1. 什么是 AOP?
AOP(Aspect Oriented Programming)面向切面编程
它是 OOP(面向对象编程) 的补充,用于将系统中的通用功能(如日志、安全、事务)进行抽取封装,提升系统的模块化程度。
1.1 作用
-
把系统中多个模块都需要的功能(日志、权限、事务)单独封装成切面
-
避免多个类中重复编写相同功能的代码
1.2 举例说明
例如:每个业务方法执行前都要记录日志:
System.out.println("记录日志");
可以将此功能用 AOP 封装,从而避免每个方法中都写这段代码。
1.3 实现
- 动态代理是面向切面编程最主流的实现。而SpringAOP是Spring框架的高级技术,旨在管理bean对象的过程中,主要通过底层的动态代理机制,对特定的方法进行编程。
2. AOP 的术语概念
这里先简单了解,后续会详细讲解
| 名称 | 说明 |
|---|---|
| JoinPoint | 被拦截的方法 |
| PointCut | 实际被拦截的方法(JoinPoint 的子集) |
| Advice | 增强的方法(增强逻辑) |
| Aspect | 切入点 + 通知的组合 |
| Weaving | 应用切面生成代理对象的过程 |
3. 快速体验 AOP 编程
3.1 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
3.2 创建切面类
@Slf4j
@Component
@Aspect //AOP类
public class TimeAspect {
@Around("execution(* com.qiyi.service.*.*(..))") //切入点表达式
public Object recordTime(ProceedingJoinPoint joinPoint) throws Throwable{
//1.记录开始时间
long begin = System.currentTimeMillis();
//2.调用原始方法执行
Object result = joinPoint.proceed();
//3.记录结束时间,计算其执行耗时
long end = System.currentTimeMillis();
log.info(joinPoint.getSignature() + "方法执行耗时:{}ms",end-begin);
return result;
}
}
3.3 测试
我们直接在原项目里面任意执行一个请求:

然后去后台查看执行日志:

总结一句话:AOP 让你专注业务逻辑,把“重复的锅”甩给切面!
END
学习自:黑马程序员——JavaWeb课程
1950

被折叠的 条评论
为什么被折叠?



