我无法通过大胆的陈述理解:
这里要理解的关键是内部的客户端代码 Main类的main(..)具有对代理的引用。这意味着 该方法调用该对象引用将是代理上的调用, 因此代理将能够委托给所有人 与该特定方法相关的拦截器(建议) 呼叫。 然而,一旦调用终于到达目标对象, 在这种情况下,SimplePojo引用,任何方法都可以调用它 make on,例如this.bar()或this.foo(),将会是 针对此引用而不是代理调用。这有 重要的含义。这意味着自我调用不会发生 得到与方法调用相关的建议 有机会执行。
以下代码:
public class Main {
public static void main(String[] args) {
ProxyFactory factory = new ProxyFactory(new SimplePojo());
factory.addInterface(Pojo.class);
factory.addAdvice(new RetryAdvice());
Pojo pojo = (Pojo) factory.getProxy();
// this is a method call on the proxy!
pojo.foo();
}
}
public class SimplePojo implements Pojo {
public void foo() {
// this next method invocation is a direct call on the 'this' reference
this.bar();
}
public void bar() {
// some logic...
}
}