一、什么是AOP
与OOP对比,AOP是处理一些横切性问题,这些横切性问题不会影响到主逻辑实现的,但是会散落到代码的各个部分,难以维护。一键获取源码地址spring aop面试题
AOP就是把这些问题和主业务逻辑分开,达到与主业务逻辑解耦的目的。

二、 AOP的应用场景
· 日志记录
· 权限验证
· 效率检查
· 事务管理

三、Spring AOP原理及其应用
3.1 AOP相关概念
· Aspect(切面): 通常是一个类(交给Spring容器管理),里面可以定义切入点和通知
· JointPoint(连接点): 程序执行过程中的一个点,如方法的执行或异常的处理
· Advice(通知): AOP在特定的切入点上执行的增强处理
· 通知类型:
· Before advice
· After returning advice
· After throwing advice
· After (finally) advice
· Around advice
· 调用顺序:
· Around advice>Before advice>After (finally) advice>After returning advice/After throwing advice
· Pointcut(切入点): 连接点的集合
· Target object(目标对象):被通知对象
· AOP proxy:AOP框架创建的对象,代理就是目标对象的增强。
· JDK dynamic proxy
· CGLIB proxy
· 思考: 初始化时织入还是获取对象时织入?
· Weaving(织入):把代理逻辑加入到目标对象上的过程叫做织入
3.2 AOP的应用
3.2.1 Spring AOP with AspectJ pointcuts
Schema-based AOP Support
xml配置对AOP支持的 后置处理器
AspectJAwareAdvisorAutoProxyCreatorAnnotationAwareAspectJAutoProxyCreator // 配置 aop:aspectj-autoproxy/
spring-aop.xml
bat.ke.qq.com.config.XmlAspect"/>
public class XmlAspect { public void before(JoinPoint point) { System.out.pr

本文详细介绍了Spring AOP的概念、应用场景及原理,包括AOP的相关概念、通知类型、切入点表达式,以及Spring AOP如何使用AspectJ pointcuts和auto-proxy。还探讨了JDK动态代理和CGLIB代理的源码分析。
最低0.47元/天 解锁文章
1557

被折叠的 条评论
为什么被折叠?



