ioc
aop
Spring AOP全称为Spring Aspect-Oriented Programming,即面向切面编程,是运行时织入的,那么运行时织入到底是怎么实现的呢?答案就是代理对象。代理对象又可以分为静态代理和动态代理。
静态代理
动态代理
- JDK代理模式
JDK动态代理主要涉及java.lang.reflect包下的两个类:
Proxy类和InvocationHandler接口。
JDK代理实现的三个要点:
① 通过Java.lang.reflect.Proxy类来动态生成代理类;
② 代理类要实现InvocationHandler接口;
③ JDK代理只能基于接口进行动态代理的;
- cglib代理
CGLib采用非常底层的字节码技术,可以为一个类创建子类,并在子类中采用方法去技术拦截所有的父类方法的调用,并顺势织入横切逻辑。
CGLib和JDK的原理类似,也是通过方法去反射调用目标对象的方法。