2012-02-08 34 views
2

我有下面的切入點:Spring AOP的切入點並不適用於抽象方法

@Before(value="execution(* datasync.polling.Poller+.*(..))") 
public void beforePoll() { 
    logger.info("DOING THIS"); 
} 

而下面的抽象類:

package datasync.polling; 
import datasync.principle; 

public abstract class Poller<P extends Principle> { 
    protected P principle; 

    public Poller(P principle) { 
     this.principle = principle; 
    } 

    @Override 
    public String toString() { 
     return "Poller for " + principle.toString(); 
    } 

    public abstract P doPoll(); 
} 

我的切入點,只有當我打電話Poller.toString()應用,不是Poller.doPoll()。我希望它適用於在Poller類或其子類中接受任意數量參數的任何方法。爲什麼不是這種情況?

回答

0

可能的一個點中缺少表達

@Before(value="execution(* datasync.polling.Poller+.*(..))") 
@Before(value="execution(* datasync.polling.Poller+..*(..))") 
               ^