这周学习的关于AOP的知识点总结:
1.AOP概念(Aspect Oriented Programming)
(1)面向切面编程(面向方面编程),利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑的各部分之间的耦合度降低,提高程序的可重性,同时提高了开发的效率。
(2)不通过修改源代码,在主干功能里面添加新功能。
2.AOP底层原理
(1) AOP底层使用动态代理
<1>有两种情况动态代理
第一种有接口,使用JDK动态代理(创建接口实现类的代理对象,增强类的方法)
第二种没有接口,使用CGLIB动态代理(创建当前子类的代理对象,增强类的方法)
3.AOP(JDK动态代理)
(1)使用JDK动态代理,使用Proxy类里面的方法创建动态对象
调用newProxyInstance方法
方法有三个参数:
(类加载器)
(增强方法所在的类,这个类实现的接口,支持多个接口)
(实现这个接口InvocationHandler,创建代理对象,写增强方法)
(2)编写JDK动态代理代码
(创建接口,定义方法)
(创建接口实现类,实现方法)
(使用Proxy类创建接口代理对象)
4.通知(增强):实际增强的逻辑部分就叫通知(增强)
(前置通知)(@Before)
(后置通知)(@AfterReturning)
(环绕通知)(@Around)
(异常通知)(@AfterThrowing)
(最终通知)finally(@After)
5.AOP操作(准备)
(1)在Spring框架中一般都是基于AspectJ实现AOP操作
AspectJ不是Spring组成部分,独立AOP框架,一般把AspectJ和Spring框架一起使用,进行AOP操作。
(2)基于AspectJ实现AOP操作
(基于xml配置文件实现)
(基于注解方式实现)
(3)在项目工程中引入AOP相关依赖
·
(4)切入点表达式
(语法结构)
execution ([权限修饰符] [返回类型] [类全路径] [方法名称] ([参数列表]))
6.AOP操作(AspectJ注解)
(1)创建类,在类里面定义方法
(2)创建增强类
在增强类里面创建方法,不同的方法代表不同的类型通知
(3)进行通知的配置
(在Spring配置文件中开启注解扫描)
(使用注解创建User和UserProxy对象)
(在增强类上面添加注解@Aspect)
(在Spring配置中开启生成代理对象)
(4)配置不同类型的通知
在增强类的里面,在作为通知方法上面添加通知类型注解,使用切入点表达式配置
(5)相同切入点抽取
(6)设置增强类的优先级
(在增强类的上面添加注解@Order(数字类型值),数字越小,优先级越高)
两个可以找jar包和依赖的网站:
https://mvnrepository.com/