
动态代理
点不点外卖
这个作者很懒,什么都没留下…
展开
-
【Spring】ProxyFactory
Spring的ProxyFactory是一个非常优秀的工厂模式的例子。/** * Create a new proxy according to the settings in this factory. * <p>Can be called repeatedly. Effect will vary if we've added * or removed interfaces. Can add and remove interceptors. * <p>Uses t原创 2020-06-11 10:53:19 · 292 阅读 · 0 评论 -
【动态代理】JDK动态代理为什么要基于接口
我们都知道CGLIB动态代理是基于继承的,而JDK动态代理是基于接口的,为什么不能也基于继承呢?现在通过代码来看看原因,至于面试的时候可能会被问到为什么不通过聚合或者组合来实现,原因很明显就是为了降低耦合性。// 定义目标对象的接口public interface UserDao { /** * */ void query();}// 目标对象@Repository("userDao")public class UserDaoImpl implements UserDao { @原创 2020-06-02 12:07:56 · 783 阅读 · 2 评论 -
【动态代理】手写自己的动态代理
Spring中常用到JDK动态代理和CGLIB动态代理,让他们帮我们生成对目标对象增强后的代理对象,避免了在这个工程中手动新建代理类文件导致类爆炸,手写动态代理也是以此为目标。/** * 目标对象 * @author l */public interface TargetInterface { /** * 目标对象方法 * @param str1 参数 * @param str2 参数 */ void query(String str1, String str2);}/*原创 2020-06-07 22:55:08 · 299 阅读 · 0 评论 -
【动态代理】InvocationHandler
InvocationHandler位于JDK反射包下,其作用是在实现JDK动态代理的时候提供了动态执行增强逻辑的方法。InvocationHandler的用法如下:public class JdkInvocationHandler implements InvocationHandler { TargetInterface target; /** * InvocationHandler的实现类需要提供一个构造器,用来接收目标对象 * 否则接口中的method是无法执行的,因为没有对象就没有办原创 2020-06-10 11:18:53 · 8370 阅读 · 0 评论