AOP的概述
- 什么是AOP
:AOP称为:面向切面编程,他是一种 编程思想;
AOP采取横向抽取机制,取代了传统纵向继承体系重复性袋面的编写方式(应用场景:例如性能监视、事务管理、安全检查、缓存、日志记录等)。
- AOP的作用
权限校验
日志记录
性能检测
缓存技术
事务管理 - AOP底层实现
代理机制:jdk代理 要求目标对象面向接口 CGLIB代理(面向接口、面向类)
Spring中的AOP
Joinpoint(连接点):(方法)
所谓连接点指那些被拦截到的点。在spring中,这些点指的是方法,因为spring只支持方法类型的连接点
Pointcut(切入点):(方法)
所谓切入点是指我们要对那些Joinpoint进行拦截的定义
Advice(通知、增强);(方法)
所谓通知是指拦截到Joinpoint之后所要做的事情就是通知。
通知的类型:前置通知、后置通知、异常通知、最终通知、环绕通知。
Target(目标对象):代理的目标对象
Weaving(植入):是指把增强应用到目标对象来创建新的代理对象的过程
Proxy:一个类被AOP植入增强后,就产生一个结果代理类
Aspect(切面):是切入点和通知的结合
Introduction(引介):
## 切入点表达式的写法
关键字:execution(表达式)
表达式:
参数一:访问修饰符-非必填
参数二:返回值
参数三:包名.类名-非必填
参数四:方法名(参数)
参数五:异常-非必填
访问修饰符可以省略:
返回值可以使用通配符(*:表示任意),表示任意返回值
包名可以使用通配符,表示任意包,但是有几级包,就需要写几个*.
报名可以使用..表示当前包及其子包
类和方法名都可以用*来实心通配
参数列表:
可以直接写数据类型:
基本类型直接写名称:
应用类型写包名.类名的方式
可以使用通配符比保湿任意类型,但是必须有参数
可以使用。。表示有无参数均可有参数可以使任意类型
全通配写法:* *。。*。*(。。)