AOP代理:
AOP 代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC 容器负责管理 AOP 代理可以直接使用容器中的其他Bean实例作为目标,这种关系可由IoC容器的依赖注入提供
AOP实现的底层逻辑:使用动态代理实现
如果目标类有接口 则使用的是jdk动态代理
如果目标类没有接口 则使用的是cglib动态代理
jdk动态代理 | cglib动态代理 | |
封装主体 | jdk原生的代理方式 | spring封装的代理模式 |
实现原理 | 通过接口的形式 | 通过继承的方式 |
过滤器Filter | spring拦截器(aop) | |
实现主体与级别 | servlet容器 | spring容器 |
执行顺序 | 先于spring拦截器执行 | 后于Filter过滤器执行 |
实现原理 | 基于函数回调实现 | 基于动态代理实现 |
AOP使用场景:
AOP特性概念:
-
通知(Advice): AOP 框架中的增强处理。通知描述了切面何时执行以及如何执行增强处理。
-
连接点(Join point): 连接点表示应用执行过程中能够插入切面的一个点,这个点可以是方法的调用、异常的抛出。在 Spring AOP 中,连接点总是方法的调用。
-
切点(PointCut): 可以插入增强处理的连接点。
-
切面(Aspect): 切面是通知和切点的结合。
-
引入(Introduction):允许我们向现有的类添加新的方法或者属性。
-
织入(Weaving): 将增强处理添加到目标对象中,并创建一个被增强的代理对象。