AI智能
改变未来

Spring的AOP的底层实现原理?

aop是ioc的一个扩展功能,先有的ioc,再有的aop,只是在ioc的整个流程中新增的一个扩展点而已:BeanPostProcessor

底层实现用的是动态代理

AOP应用场景

场景一: 记录日志

场景二: 监控方法运行时间 (监控性能)

场景三: 权限控制

场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )

场景五: 事务管理 (调用方法前开启事务, 调用方法后提交关闭事务 )

bean的整个创建过程中有一个步骤可以对bean进行扩展实现,aop本身就是一个扩展功能,所以在BeanPostProcessor的后置处理方法中,来进行实现。

 1、代理对象的创建过程(advice,切面,切点)

 2、通过jdk或者cglib的方式来生成代理对象

 3、在执行方法调用的时候,会调用到生成的字节码文件中,直接会找到DynamicAdvicedInterceptor类中的intercept方法,从此方法开始执行

 4、根据之前定义好的通知来生成拦截器链

 5、从拦截器链中依次获取每一个通知开始进行执行,在执行过程中,为了方便找到下一个通知是哪一个,会有一个InvocationInterceptor的对象,找的时候是从-1开始查找并且执行的。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Spring的AOP的底层实现原理?