Spring AOP

AOP

OOP 面向对象编程 AOP 面向切面编程

AOP是一种思想,对某一类事情的集中处理

Spring AOP是一个框架,提供了一种对AOP思想的实现

主要为解耦而生

AOP的组成

++切面、连接点、切点、通知++

1.切面:定义AOP业务类型 当前AOP是干嘛得

2.连接点: 调用AOP得地方叫做一个连接点

3.切点: 定义AOP拦截规则

4.通知:定义什么时候干什么事情

4.1 前置通知:拦截得目标方法之前执行的通知

4.2 后置通知:拦截得目标方法之后的通知

4.3 返回之后通知: 拦截的目标方法返回数据之后通知

4.4 抛出异常之后的通知:拦截的目标方法抛出异常之后执行的通知

4.5 环绕通知 在拦截方法之前后都执行的通知

主方法一定要和其他包同级或者比其他包高级 不能低级 低级的无法执行到高级

实现Spring AOP

1.添加Spring AOP框架支持

2.定义切面和切点

3.定义通知

当浏览器访问这个临时方法时,会优先被拦截执行

一个切面可以有多个切点

对不同的切点定义不同的通知

环绕通知与其他通知不同,1.它有返回值2.它有参数3.它同时拥有前置,后置通知

当一个切点既有前置通知,后置通知,又有环绕通知时

那么环绕通知的前置优先级最高,环绕通知的后置通知优先级最低

织入:代理的生成时机

编译期类->加载期->运行期

JDK和CGLIB的区别

JDK实现,要求被代理类必须实现接口

CGLIB实现,被代理类可以不实现接口

总结

AOP时对某方面能力的统一实现,是一种思想,而Spring AOP是对AOP的具体实现,Spring AOP通过Aspecto注解的方式实现AOP的功能

Spring AOP的实现步骤

1.添加Spring AOP框架支持

2.定义切面和切点

3.定义通知

Spring AOP是通过动态代理的方式,在运行期将AOP代码织入到程序中的,它的实现方式有两种:JDK Proxy和CGLIB

Spring拦截器

1.创建自定义拦截器,实现Handlerinterceptor接口的preHandle方法

2.将自定义拦截器加入WebMvcConfigurer的addinterceptors方法中

创建一个普通登录校验,和测试方法

1.创建自定义拦截器,实现Handlerinterceptor接口的preHandle方法

2.将自定义拦截器加入WebMvcConfigurer的addinterceptors方法中

当访问test2时,会被拦截

当第一次访问login时,虽然没被拦截器拦截,但是账号密码错误,依旧为false

当账号密码输入正确时,就会创建session,也就是浏览器内的cookie

这时就有了session,这样拦截器就允许test2执行了

统一异常处理

统一数据返回格式

实现接口ResponseBodyAdvice的supports方法和beforeBodyWrite方法

相关推荐
panxianren4 小时前
Bun 1.4 的 bun test --parallel 将 4 秒的测试套件缩短到约 1 秒
java·javascript
sunshine22 girl5 小时前
Java学习七 Java 项目实战2-注册业务
java·学习
省钱兄--zs6 小时前
北京24小时自助健身房系统软件开发实战:从架构设计到部署指南
java·数据仓库·spring boot·小程序·需求分析
youdexiang6 小时前
Android录音软件时间关键词检索功能分析
java·人工智能
sunshine22 girl7 小时前
Java学习七 Java 项目实战1-项目创建和主页面搭建
java·开发语言·学习
code2cat7 小时前
Java进阶篇之AtomicStampedReference:引用回到原值,版本戳仍能记住变化
java·cas·并发编程·aba
泡茶喝茶写代码8 小时前
A股量化数据工程:从 REST 接口到策略信号(第 8 篇):成长能力因子:营收与利润增速
java·python·股票数据api·股票数据api接口·股票量化数据api·股票量化数据接口·股票数据api数据
hasty9 小时前
policy.xml 在,不代表策略生效:ImageMagick 补丁给安全配置验收的提醒
xml·mysql·安全
\光辉岁月/9 小时前
7.javase-面向对象
java·开发语言
weixin_531094699 小时前
heap_4内存管理
java·开发语言·算法