欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > springAOP

springAOP

2025/4/5 22:39:50 来源:https://blog.csdn.net/2202_75439262/article/details/146441330  浏览:    关键词:springAOP

AOP思想

AOP是Aspect Oriented Programming(面向切面编程),切面是指某一特定问题,所以AOP也可以理解为面向特定方法编程。比如我们在用户登录时设置登录校验拦截器,就是对“登录校验”这一类问题的统一处理,所以拦截器是AOP的一种应用,而AOP是一种思想,拦截器就是AOP思想的一种实现。而Spring框架也实现了这种思想,提供了拦截器技术的相关接口。

同样的,统一数据返回格式和统一异常处理,也是AOP思想的一种实现。

当然AOP思想的实现方法有很多,有SpringAOP,也有AspectJ,CGLIB等

SpringAOP

我们已经知道了统一功能之后还是需要了解SpringAOP的,拦截器作用的维度是URL(一次请求和响应),@ControllerAdvice 应用场景主要是全局异常处理(配合自定义异常效果更佳),数据绑定,数据预处理,AOP作用的维度更加细致(可以根据包、类2、方法名、参数等进行拦截),能够实现更加复杂的业务处理。

SpringAOP的核心概念

1.切点(Pointcut)

切点的作用是提供一组规则,告诉程序对那部分进行增强

2.连接点(JoinPoint)

满足切点表达式规则的方法,就是连接点,也就是可以被AOP控制的方法,上述图中的切点表达式中断包名路径下的方法都是连接点

切点和连接点的关系

连接点是切点的元素,切点是连接点的集合

3.通知(Advice)

通知就是具体要做的工作,指哪些重复的逻辑,也就是共性功能(最终体现为一个方法)

对于上述方法中程序记录方法执行耗时就是通知。

在AOP面向切面编程中,我们把这部分重复的代码逻辑抽出单独定义,这部分代码就是通知的内容。

4.切面(Aspect)

切面 =切点 + 通知

通过切面就能够描述当前AOP程序需要针对于哪些方法,在什么时候执行什么样的操作

切面既包括通知的定义和连接点的定义

切面所在的类,我们一般称为切面类(@Aspect注解标识的类)

SpringAOP的实现方式(常见面试题)

1.基于注解

2.自定义注解

3.springAPI

4.基于代理来实现

面试官:谈谈你对IOC和AOP的理解及AOP四种实现方式[通俗易懂]-腾讯云开发者社区-腾讯云

SpringAOP原理

SpringAOP是基于动代理来实现AOP的

代理模式:

也叫委托模式,为其他对象提供一种代理以控制对这个对象的访问,让我们在调用目标方法的是和,不再是直接对目标方法进行调用,而是通过代理类间接调用

使用代理前:

使用代理后:

SpringAop的实现方式

springAOP中的动态代理主要有两种实现方式:JDK动态代理和CGLIB动态代理。

JDK动态代理通过反射来接受被代理的类,并要求被代理的类必须实现一个接口。

如果目标类没有实现接口,那么SpringAOP会选择使用CGLIB来动态代理目标类。

CGLIB是一个 Code Generation Library 是一个代码生产库,可以再运行时动态的生成某i个对象的子类,CGLIB是使用继承的方式做的动态代理,因此如果某个类被标记为final,那么是无法使用CGLIB做动态代理的

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词