1.什么是aop?
AOP:Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面)
通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,
AOP可以说也是这种目标的一种实现。
2.aop的作用
aop可以进行权限校验,日志记录,性能监控,事务控制
3.Spring底层aop的实现原理
动态代理:
JDK动态代理:只对实现接口的类进行动态代理
Cglib动态代理:(类似于javassist第三方代理技术),对没有实现接口的类产生代理对象
cglib
是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口。Hibernate支持它来实现PO(Persistent Object 持久化对象)字节码的动态生成。
4.Spring使用AspectJ作为自身的开发