概念
AOP(Aspect Oriented Programming,面向切面编程),spring的强大辅助工具之一就是AOP了,能够动态的对即将执行的代码进行拦截处理,比如url过滤也就是权限相关验证,日志处理,缓存机制等等。
实现机制
动态代理
动态字节码生成(cglib)
字节码转换
自定义类加载器
Spring aop的实现
Spring AOP 默认是通过动态代理实现的,当然一般也会搭配cglib一起,当动态代理没用的时候,也就是代理类没有对应的接口时,会采用cglib的实现,而且spring aop有一定的缺点:
1.只能对方法进行切入,不能对接口,字段,静态代码块进行切入。
2.调用同一个类中的其他方法也不会被切入。
3.性能不是很好,使用自定义类加载器,性能要优于动态代理。