AOP
Aspect Oriented Programming面向切片编程【就是面向特定方法变成】
SpringAOP是Spring框架的高级技术,旨在管理bean对象的过程中,主要通过底层的**动态代理机制,**对特定的方法进行编程
1.导入AOP依赖
2.编写AOP程序
加上@Component
//类交给IOC容器管理
@Aspect
//表明不是普通类是AOP类
@Around
//指定对那些方法使用
AOP核心概念
连接点:JoinPoint 可以被 AOP 控制的方法
通知:Advice抽取出来的重复的逻辑【体现为一个方法】
切入点:PointCut匹配连接点的条件【切入点表达式】
目标对象:Target通知应用的对象
AOP执行流程
依赖注入时,注入的是代理对象,就是已经加上AOP功能增强的对象
AOP进阶
1.通知类型
切入点表达式重复,所以抽取出来。当需要改动切入点表达式时,就只需改动一个就行。
切入点表达式抽取:@Pointcut
2.通知顺序
1.字母顺序比如MyAspect1,MyAspect2,MyAspect3这样的顺序
2.用@Order控制
3.切入点表达式
方法参数:Integer要写全名即它的包名也要写
新建注解用来起标识作用
1.自定义注解
@Retention描述注解什么时候生效
@Target作用于于什么地方
连接点
JoinPoint可以会的方法执行时的相关信息
记录操作日志 案例【妙啊】
黑马课程AOP案例
步骤:
1.引入依赖
2.将需要记录的整个日志信息建表,对应实体类
3.自定义注解@Log
4.定义切面类
实体类:
Mapper接口,用来插入日志表
自定义注解
定义切面类:
拿到当前登录员工的信息:通过JWT令牌获取登录员工信息,登录成功后,每一次请求,前端都会在请求头中将令牌携带到后端
直接注入一个HttpServletRequest的request对象来拿到当前请求的请求对象
然后,获取请求头中的jwt令牌,解析令牌
这个request从哪里进来的?什么时间交到ioc中?后面会说,这是spring BOOT的自动配置功能 --HTTPServletRequest是Tomcat收到请求后创建的,然后传给Spring的Servlet