0

嗨,我想我在 Spring 中发现了一个错误。我试图在运行某些方法之前使用一个简单的 MethodBeforeAdvice 来检查我的登录数据,这里是代码的快照。

公共类主要{

public static void main(String []args){
    ProxyFactory pf = new ProxyFactory();
    SecureMessage sm = new SecureMessage();
    pf.setTarget(sm);
    pf.addAdvice(new SecurityAdvice());
    SecureMessage sm1 = (SecureMessage) pf.getProxy();
    sm1.showMessage();
}

如您所见,没有什么特别的。当调用 showMessage() 方法时,我期望 SecurityAdvice 先于方法首先被调用,但事实并非如此。但是当我在调试窗口中并来到最后一行时,这是一件超级奇怪的事情。

sm1.showMessage();

我想看看 sm1 是否是一个代理,所以我在“变量”窗口中单击它,你知道调用了之前的方法吗?即使是陌生人,我也可以多次单击它,然后调用该方法。有没有人知道发生了什么?

4

1 回答 1

0

找到答案,它不起作用的原因是因为 showMessage() 是一个静态方法。似乎 MethodBeforeAdvice before 方法不适用于静态方法。至于调试问题,我不知道。

于 2012-09-03T12:49:42.507 回答