置顶那个是错的,invoke()里的proxy就是要被代理的对象,真的代理对象是在Proxy.newProxyInstance()生成的,如果nvoke()里的proxy就是被代理对象,还要后者干嘛??都可以直接用代理对象了
2017-08-08
已采纳回答 / YCyoung
代理的代理,就是将用时间增强过的代理再用日志增强,这样就可以同时输出时间和日志,应该对car的时间增强代理类增强日志功能。看不懂你的ctp和clp的意义何在,你可能将动态代理和静态代理混淆了,你这里的代理处理器还是对时间的增强,并没有对日志增强的代理处理器。(动态代理是依据代理处理器来动态创建代理的。)
2017-07-21
最后那部分load到内存,我自己的理解是装载类,然后得到这个类的Class然后通过Class获得构造器的过程。经测试,使用Class.forName()也可以实现相同的效果。(有不对的欢迎指正)
装载类使用ClassLoader.loadClass(),也可以使用Class.forName(),这两个都能得到Class对象,区别是前者不会初始化类,即不会加载类的静态变量和静态块,而Class.forName()则会加载类的静态块,分配类的静态变量。JDBC连接的时候使用Class.forName()实际上是加载Driver类的static块而ClassLoader不会加载。
装载类使用ClassLoader.loadClass(),也可以使用Class.forName(),这两个都能得到Class对象,区别是前者不会初始化类,即不会加载类的静态变量和静态块,而Class.forName()则会加载类的静态块,分配类的静态变量。JDBC连接的时候使用Class.forName()实际上是加载Driver类的static块而ClassLoader不会加载。
2017-07-18