Как подсказывает smp7d в комментариях к вашему вопросу, прокси, созданные Spring, могут иметь к ним только совет, если вызов метода поступает из другого объекта. Самостоятельного вызова недостаточно, чтобы вызвать совет.
http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch08s06.html
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();
}
}
Ключевым моментом, который необходимо понять, является то, что клиентский код внутри main (..) класса Main имеет ссылку на прокси. Это означает, что вызовы методов для этой ссылки на объект будут вызовами прокси-сервера, и, таким образом, прокси-сервер сможет делегировать всем перехватчикам (рекомендации), которые имеют отношение к этому конкретному вызову метода. Однако, как только вызов, наконец, достигнет целевого объекта, в этом случае ссылка SimplePojo, любые вызовы методов, которые он может сделать сам, такие как this.bar () или this.foo (), будут вызываться против это ссылка, а не прокси. Это имеет важные последствия. Это означает, что самовывоз не приведет к тому, что совет, связанный с вызовом метода, получит шанс на выполнение.