AOP 面向切面编程,旨在各个方法中抽离出每个方法都要执行的耦合方法,达到代码复用的目的
JAVA中的AOP的实现是通过动态代理实现的,其中包含JDK动态代理和cglib动态代理两种形式生成代理对象,
在Spring中对两种动态代理进行了封装整合,新增了ProxyBeanFactory,只需要实现该工厂对象的相关方法,设置需要进行AOP的类和新增需要在方法运行前或者运行后执行的切面代理逻辑,就可以实现一个AOP,这样一个对象如果类以接口的形式存在,那么会使用JDK动态代理,默认使用cglib动态代理
Spirng中封装了三种方法帮助我们对代码进行AOP,只需实现其中一种方法的方法即可,一般我们采用注解的方式,执行逻辑无非就是设置需要进行切面的类和需要执行的代理逻辑,如下图所示方法
一
二
三
通过我们的设置,相关方法都会去实现我们的BeanPostProcessor后置处理器来执行切面,bean ->实例化->填充属性->初始化之后的扩展节点进行解析,扫描我们进行了AOP相关操作的类和要执行的相关代理逻辑,判断是否需要进行AOP,用哪个动态代理来实现AOP
网友评论