提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Spring的AOP简介
什么是AOP
AOP是指面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的技术。可以对业务逻辑的各个部分进行隔离,从而使业务逻辑各部分之间就耦合度降低,提高程序的可重用性,提高开发效率。
AOP的作用和优势
作用:在运行期间,在不修改源码的情况下对方法进行功能增强
优势:减少重复代码,提高工作效率,便于维护
初级代码阶段:多个方法调用相同的方法,每个方法中添加这个方法,耦合度高
延伸:每个方法中放入相同方法的引用,仍然存在耦合
AOP:通过配置文件,使方法在运行时在内存中和需要的方法进行结合。
目标+增强方法=切面
AOP的底层实现
实际上AOP底层是通过spring提供的动态代理技术实现的。在运行期间,spring通过动态代理技术动态生成代理对象,代理对象方法执行时进行增强功能的介入,再去调用目标对象的方法,从而完成功能的增强。
常用的JDK基于接口和CGLIB代理技术基于父类
AOP的相关概念
Spring的AOP实现底层就是对上面的动态代理的代码进行了封装,封装后我们只需对需要关注的部分进行代码编写,并通过配置的方法完成指定目标的增强、
- Target(目标对象):代理的目标对象
- Proxy:一个类被AOP植入增强后,就产生一个结果代理类
- Joinpoint(连接点):所谓的连接点就是指那些被拦截的点,在spring中可以被增强的方法叫连接点
- Pointcut(切入点):对那些joinpoint进行拦截
- advice(通知,增强):所增强的方法即拦截到joinpoint之后要做的事情
- Aspect:切面目标方法和增强就是切面,切点加通知
- weaving :织入:把增强和目标对象结合到一起的过程就叫织入
AOP开发需要明确的事项
1.需要编写的内容
- 编写核心业务代码(目标类的方法)
- 编写切面类。切面类中有通知
- 在配置文件中,配置织入关系,即将哪些通知和哪些连接点进行结合
2.AOP技术实现的内容
Spring框架会监控切入点方法的执行,一旦监控到切入方法执行了,使用代理机制,动态创建目标对象的代理对象,根据通知类别,在代理对象的对应位置,将通知对应的功能织入,完成完整的代码逻辑运行。
3.AOP底层使用的代理方法
在spring中,框架根据目标类是否实现了接口来决定采用哪种动态代理方式。