AOP的定义
AOP (Aspect?Orient Programming),直译过来就是 面向切面编程,AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。
OOP引入封装、继承、多态等概念来建立一种对象层次结构。
AOP则利用一种称为“横切”的技术,剖开对象内部,并将公共行为封装到可重用模块,从而减少重复代码,降低耦合。
Spring AOP的术语
AOP的术语大概有以下几个:
Joinpoint(连接点) :指那些被拦截到的点,在?Spring?中,指可以放研念机样行题是公态调会
Pointcut(切入点): 指要对哪些?Joinpoint进行拦截.即被拦截的连接点。
Advice?(通知): 指拦截到Joinpoint?之后要做的事情即对切入点增强的内容。Target?(目标)?指代理的目标对象。
Weaving(植入) :指把增强代码应用到目标上?生成代理对象的过程。
Proxy(代理) :指生成的代理对象。
Aspect?(切面): 切入点和通知的结合。?
AOP的通知分类:
通知根据通知的时机区分有五种类型:
前置通知(before)::使用aop:before标签,在方法之前执行
后置通知(after)::使用aop:after标签,在方法之后执行,无论方法内部是否抛出异常
后置返回通知(after-returning):使用aop:after-returning标签,在方法之后执行并且方法内部不能抛出异常
后置异常通知(after-throwing):使用aop:after-throwing标签,在方法内部抛出异常时执行
环绕通知(around):使用aop:around标签,在方法之前和之后都执行
使用AOP的多种方式:
1.使用Aspoectj实现切面(基于注解的实现方式()
步骤:
(1)、在spring配置文件中开启aop注解方式
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
(2)、使用@Aspect定义切面,使用@Pointcut定义切点,使用@Before、@After、@Around、@AfterReturning、@AfterThrowing定义通知的应用时机,
运行结果:
2.使用xml的方式来完成AOP的使用
(1)首先我们先建一个项目然后导入一个AOP相关的坐标
(2) 再创建目标接口
(3)创建目标类
(4)创建切面类
(5)配置applicationContent.xml
(6)测试类
最后Spring AOP的实现原理
Spring的AOP实现原理其实很简单,就是通过动态代理实现的。
Spring AOP 采用了两种混合的实现方式:JDK 动态代理和 CGLib 动态代理。
JDK动态代理:Spring AOP的首选方法。 每当目标对象实现一个接口时,就会使用JDK动态代理。目标对象必须实现接口
CGLIB代理:如果目标对象没有实现接口,则可以使用CGLIB代理。
资料链接:https://blog.csdn.net/Cr1556648487/article/details/126777903
? ? ? ? ? ? ? ?https://blog.csdn.net/qq_44096670/article/details/111311301?