IOC
IOC依靠DI实现。Spring 中的 IoC 的实现原理就是工厂模式+反射机制。
DI:构造函数注入, setter注入, 接口注入
AOP
如果目标对象实现了接口,使用JDK动态代理去创建代理对象。JDK Proxy 是通过拦截器+反射实现。
如果目标对象没有实现了接口,使用CGlib动态代理生成一个被代理对象的子类来作为代理。使用CGLib实现动态代理,CGLib底层采用ASM字节码生成框架,使用字节码技术生成代理类。
- Jointpoint(连接点):具体的切面点点抽象概念,可以是在字段、方法上,Spring中具体表现形式是PointCut(切入点),仅作用在方法上。
- Advice(通知): 在连接点进行的具体操作,如何进行增强处理的,分为前置、后置、异常、最终、环绕五种情况。
- 目标对象:被AOP框架进行增强处理的对象,也被称为被增强的对象。
- AOP代理:AOP框架创建的对象,简单的说,代理就是对目标对象的加强。Spring中的AOP代理可以是JDK动态代理,也可以是CGLIB代理。
- Weaving(织入):将增强处理添加到目标对象中,创建一个被增强的对象的过程
AOP 实现原理:
静态代理:指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强
动态代理:在运行时在内存中“临时”生成 AOP 动态代理类,因此也被称为运行时增强
JDK 动态代理
CGLIB



