您现在的位置是:首页 >其他 >Spring AOP网站首页其他
Spring AOP
介绍AOP
面向切面编程, 一种思想, 对某一类事情的集中处理
突然理解切面的含义啦~~比如说一个叫山海关的收费站~okkk无论你从哪里来,无论你要干什么,只要你经过这个收费站,你就要被拦截, -- 这就是一个切面~~~
AOP 是思想; Spring AOP 是框架, 提供了一种对 AOP 思想的实现 ->IoC和DI
AOP 组成
切面: 在程序中就是一个处理某方面具体问题的一个类, 类里面包含了很多方法, 这些方法就是切点和通知
切点: 用来进行主动拦截的规则(配置)
通知: 程序中被拦截请求触发的具体动作 -> 通知中要实现的具体业务代码
前置通知: 执行目标方法之前执行
后置通知: 执行目标方法之后执行
异常通知: 执行目标方法,出现异常, 执行通知
返回通知: 执行目标方法返回数据, 执行
环绕通知: 执行目标方法周期范围内, 都可以执行的方法
连接点: 可能会触发的 AOP 规则的所有点
Spring AOP 的实现
1) 添加 Spring AOP 框架支持
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2) 定义 切面, 切点
// 此类为一个切面
@Aspect
// 随框架的的启动而启动
@Component
// 定义切点 配置拦截规则
@Pointcut("execution(* com.example.demo.controller.UserController.*(..))")
// 空方法 起标识作用->下面通知方法 具体指哪一个切点
public void pointcut(){}
3) 定义 通知
@Before("pointcut()")
public void beforeAdvice(){
System.out.println("执行了前置通知");
}
@After("pointcut()")
public void afterAdvice(){
System.out.println("执行了后置通知");
}
@Around("pointcut()")
public Object arroundAdvice(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("执行环绕方法之前~~");
Object obj = null;
obj = joinPoint.proceed();
System.out.println("执行环绕方法之后~~");
return obj;
}