spring AOP 的运用
- 事务
- 日志处理
- 缓存
- 权限控制
- 错误处理
- 懒加载
什么是AOP
AOP(Aspect Orientend Programing) 称为: 面向切面编程, 它是一种编程思想 在程序运行的时候, 动态的将代码切入到类指定方法 ,指定位置上的编程思想就是面向切面的编程
基于代理思想 ,对原来目标对象,在不修改原对象代码情况下, 对原有业务方法进行增强
Spring AOP 中什么是切点
在说切入点前 需要先说连接点
连接点 : 可能被增强的点 , 目标类中的所有方法
切入点: 将会被增强的连接点 , 目标类中被增强的方法
Spring AOP中什么是目标对象
目标类: 需要被增强的类
AOP和代理模式
代理模式 : 分为静态代理 ,JDK动态代理,cglib代理
- 今天代理
代理类和被代理类实现共同的接口(或继承), 代理类中存有指向被代理类的引用, 实际执行时通过调用代理类的方法, 实际执行的是被代理类的方法。 - jdk动态代理: 必须有接口和实现类(目标类) ,通过工具Proxy生产接口对应的代理类,从而对目标类进行增强。
- Cglib代理: cglib代理生成的代理类是目标类的子类, 所有目标类不能用final修饰
AOP
SpringAOP 通过代理方式, 对目标类进行增强。
SpringAOP 底层默认使用JDK动态代理, 通过配置可以修改成cglib代理
你如何理解AOP中的连接点(Joinpoint)、切点(Pointcut)、增强(Advice)、引介(Introduction)、织入(Weaving)、切面(Aspect)这些概念?
1.目标类(target):需要被增强的类。
2.连接点(Joinpoint):可能被增强的点,目标类中的所有方法。
3.切入点(Pointcut):将会被增强的连接点,目标类中被增强的方法。
4.通知/增强(Advice):对切入点增强的内容。增强的内容通常以方法的形式体现的。增强执行的位置不同,称呼不同。
(前置通知、后置通知、环绕通知、抛出异常通知、最终通知)
通知方法所在的类,通常称为切面类。
5.切面(Aspect):通知和切入点的结合。一个通知对应一个切入点就形成一条线,多个通知对应多个切入点形成多条线,多条线形成了一个面,我们称为切面。
6.织入(Weaving): 生成切面并创建代理对象的过程。(将通知和切入点的结合,并创建代理对象的过程)
7.引介(Introduction):一种特殊的增强