动态代理的意义在于生成一个占位,来代理真实对象,从而控制真实对象的访问。我们首先来谈谈什么是代理模式。假设客户带着需求去找公司,显然不会直接和软件工程师谈,而是和商务谈,此时客户会认为商务就代表公司,客户是通过商务去访问软件工程师的。我们就可以认为商务代理了软件工程师,因此,代理的作用就是,在真实对象访问之前或者之后加入对应的逻辑,或者根据其他规则控制是否使用真实对象。此时客户就是程序中的调用者,商务就是代理对象,软件工程师就是真实对象。我们需要在调用者调用对象之前产生一个代理对象,而这个代理对象需要和真实对象建立代理关系,所以代理必须分为两个步骤:。目前,Spring常用JDK和CGLIB,而MyBatis还使用了Javassist。

Java设计模式之动态代理

Java设计模式之动态代理

Java设计模式之动态代理

Java设计模式之动态代理

Java设计模式之动态代理