| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Spring5——AOP -> 正文阅读 |
|
[Java知识库]Spring5——AOP |
一、AOP干啥的不通过修改源代码方式,在主干功能里面添加新功能 如下图添加权限判断模块 ?二、底层原理:动态代理2.1.有接口情况,使用JDK动态代理创建接口实现类代理对象,增强类的方法 过程: ????????Proxy类中的newProxyInstance创建接口实现类的代理对象 ????????过程中第三个参数需要传入接口InvocationHandler的接口实现类 ????????利用代理对象,调用原接口中的方法,就会实现InvocationHandler中重写的invoke中的方法 2.没有借口情况,使用CGLIB动态代理创建子类的代理对象,增强类的方法 三、AOP术语连接点? ?可以被增强的方法 切入点? ? 真正增强的方法 通知(增强)? ?实际增强的逻辑部分,包括五种类型 切面? ?是动作,将通知应用到切入点的过程 四、AOP操作(基于注解)4.1 切入点表达式execution([权限修饰符][返回类型][类全路径][方法名称]([参数列表])) 4.2 过程4.2.1 创建类及被增强的方法 4.2.2 创建增强类,写增强的方法 4.2.3 进行通知配置 ? ? ? ? 1)开启注解扫描 ? ? ? ? 2)@Component 创建被增强类和增强类的对象 ? ? ? ? 3)在增强类上添加@Aspect ? ? ? ? 4)配置文件中开启生成代理对象 4.2.4 配置不同类型的通知 ? ? ? ? 1)@Before????????前置通知 ? ? ? ? 2)@AfterReturning????????后置通知,在返回值之后 ? ? ? ? 3)@After ????????最终通知,在方法后,有异常也执行 ? ? ? ? 4)@AfterThrowing????????异常通知,有异常时执行 ? ? ? ? 5)@Around? ? ? ? 环绕通知 因为需要找到原方法的位置,因此在方法的参数中加入ProceedingJoinPoint 4.3抽取切入点表达式@Pointcut 4.4多个增强类设置优先级@Order(数字类型)数字类型值越小优先级越高 4.5 完全注解开发写一个配置类@Configuration @ComponentScan(basePackages = {“com.atguigu”}) @EnableAspectJAutoProxy(proxyTargetClass = true) 4.6(基于配置文件,略) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 6:21:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |