什么是AOP
Spring-AOP是AOP框架之一,AspectJ也是AOP框架之一。但是Spring-AOP并不是完整的AOP框架,它里面也引入了AspectJ的一些模块,比如weaver(编织者).AOP是由AOP联盟提出的一种面向切面编程思想,Spring-AOP主要是使用动态代理来实现这个思想,他提供了两套解决方案,一种是jdk动态代理模式,一种是cglib动态代理模式。当目标优化,或本身为接口,或基于基类做代理,或自己本身也是代理则使用jdk动态代理模式,反之,则使用cglib动态代理模式。使用AOP思想可以很好的解决业务层额外功能冗余的问题,将额外功能抽取出来封装成advice,当需要使用时就切入进去。这样就使项目更加稳健。AOP这种思想的提出可以给我们提供一种解决问题的方式,我们可以不用单一使用OOP思想,在遇到问题是可以找到更好的解决方法。在web中的过滤器使用了AOP这种思想,过滤器的每次增强功能都可以看做是一起切入的过程,但是过滤器并没有使用动态代理这种方式,所以说,动态代理并不等于AOP。
静态代理并不能从根本上解决额外代码冗余问题。