Spring5.0源码中Spring AOP是如何实现原理和应用的?
摘要:前言介绍 附录:Spring源码学习专栏 在前面章节的学习中,我们对Spring框架的IOC实现源码有了一定的了解,接着本文继续学习Springframework一个核心的技术点AOP技术。 在学习Spring AOP源码之前,您是否对AO
前言介绍
附录:Spring源码学习专栏
在前面章节的学习中,我们对Spring框架的IOC实现源码有了一定的了解,接着本文继续学习Springframework一个核心的技术点AOP技术。
在学习Spring AOP源码之前,您是否对AOP有足够熟悉的理解?在对应用都不熟悉之前就去学习源码,肯定是很难理解的,所以本文先不描述源码的实现,先通过本篇博客了解熟悉Spring AOP,然后再学习源码
1、什么是AOP技术?
引用Spring官网对AOP技术的概述:
Aspect-Oriented Programming (AOP) complements Object-Oriented Programming (OOP) by providing another way of thinking about program structure. The key unit of modularity in OOP is the class, whereas in AOP the unit of modularity is the aspect. Aspects enable the modularization of concerns such as transaction management that cut across multiple types and objects. (Such concerns are often termed crosscutting concerns in AOP literature.)
挑重点来说,所谓AOP(Aspect-Oriented Programming)也即面向方面的编程,是指通过跨领域关注点的分离来实现模块化的一种面向对象技术。
跨领域也即跨多种类型和对象的事务管理等等;
关注点通常被称为横切关注点,OOP中模块化的关键单元是类,而在AOP中模块化是方面关注点通常被称为横切关注点
2、AOP的本质目的
AOP本质:在不改变原有业务逻辑的情况下增强横切逻辑,这个横切逻辑可以是权限校验逻辑、日志监控、事务控制等等
AOP相关知识详情可以参考:Spring AOP官方文档
3、AOP的相关术语
名词
描述
连接点(Joinpoint)
连接点是一个程序的执行,如方法的执行或异常的处理过程中的一个点
切入点(Pointcut)
指的是将增强代码织入到业务主线进来之后的连接点
通知/增强(Advice)
Advice可以翻译为通知或者增强,指的是切面类中用于提供增强功能的方法
目标对象(Target)
指代理的目标对象,即被代理对象
代理(Proxy)
指一个类被AOP织入增强之后,产生的代理类,即代理对象
织入(Weaving)
指的是将增强(Advice)应用到目标对象(Target)产生代理对象(Proxy)的过程。ps:AspectJ采用的是编译期织入和类装载期织入,而Spring AOP采用的是动态代理织入
切面(Aspect)
切面也就是AOP的关注点,也就是说是Advice代码的关注点,切面是对上述概念的一个综合。
