spring动态代理对象和原始对象会同时存在吗
时间: 2024-04-15 07:24:43 浏览: 241
在 Spring AOP 中,动态代理对象和原始对象是同时存在的。
当你在使用 Spring AOP 时,原始对象是你实际调用的目标对象,而动态代理对象是由 Spring AOP 自动生成的代理对象。当你通过代理对象调用方法时,实际上会委托给原始对象来执行实际的方法逻辑。
Spring AOP 的代理对象是在运行时动态生成的,它会通过 JDK 动态代理或 CGLIB 动态代理来创建。JDK 动态代理基于接口,它会创建一个实现了目标接口的代理对象;而 CGLIB 动态代理不需要目标对象实现接口,它会继承目标类并创建一个子类作为代理对象。
无论是 JDK 动态代理还是 CGLIB 动态代理,代理对象都会在内存中存在,并和原始对象同时存在。每次通过代理对象调用方法时,实际上会委托给原始对象来执行方法逻辑,并可以在方法执行前后进行一些额外的处理(如前置通知、后置通知等)。
需要注意的是,代理对象是在运行时动态生成的,每次调用都会经过代理。而原始对象则是你实际编写的业务逻辑类。
阅读全文