通俗易懂的Spring AOP原理总结

aop是什么: 传统oop开发代码逻辑之上而下的,这个过程中会产生一些横切性问题,这些问题与我们主业务逻辑关系不大,会散落在代码的各个地方,造成难以维护,aop思想就是把业务逻辑与横切的问题进行分离,达到解耦的目的,提高diamante重用性和开发效率;
应用场景:
日志记录,权限验证,事务管理,线程池关闭等

aop使用哪种动态代理?
当bean的是实现中存在接口或者是Proxy的子类,---jdk动态代理;
不存在接口,spring会采用CGLIB来生成代理对象;

源码分析:
(1):@EnableAspectJAutoProxy给容器(beanFactory)中注册一个AnnotationAwareAspectJAutoProxyCreator对象;
(2):AnnotationAwareAspectJAutoProxyCreator是一个后置处理器,在目标对象初始化完后,利用BeanPostProcessor后置通知的机制,完成对目标对象的AOP对象创建,对象内部,是封装JDK和CGlib两个技术,实现动态代理对象创建的;
(3):代理对象执行目标方法,得到目标方法的拦截器链,利用拦截器的链式机制,依次进入每一个拦截器进行执行

猜你喜欢

转载自www.cnblogs.com/liuyang-93/p/12617220.html