почему этот Pointcut Spring AOP не запускается?

Я пишу очень простую схему Spring AOP, вот файл .xml

<bean id="aoplistener" class="tao.zhang.Listener"/>

<aop:config>
  <aop:aspect ref="aoplistener">                
    <aop:pointcut id="whenCalled" expression="execution(* callme(..))" />
    <aop:after method="scream" pointcut-ref="whenCalled" /> 
  </aop:aspect>
</aop:config>

Метод scream () в tao.zhang.Listener просто выводит текст, , и предполагается, что он будет выполняться всякий раз, когда вызывается метод callme ().

У меня есть компонент под названием logger , который имеет методы log () и callme ()

public void log(){
    callme();
    System.out.println("Hello from logger ~~~~~~~~~~~~~~~~~~~");
}

public void callme(){
    System.out.println("I'm called");
}

Обратите внимание, что callme () вызывается log ()

Теперь у меня есть планировщик, который вызывает log () каждые 5 секунд:

<task:scheduler id="myScheduler" pool-size="10"/>

<task:scheduled-tasks scheduler="myScheduler">
    <task:scheduled ref="logger" method="log" fixed-rate="5000"/>
</task:scheduled-tasks>

Как ни странно, scream () не вызывается, но если callme () вызывается напрямую: вызывается

<task:scheduler id="myScheduler" pool-size="10"/>

<task:scheduled-tasks scheduler="myScheduler">
    <task:scheduled ref="logger" method="callme" fixed-rate="5000"/>
</task:scheduled-tasks>

scream () !

Есть предложения? Мне кажется, что этот pointcut не соответствует методам, вызываемым внутри другого метода ...

6
задан Donal Fellows 10 February 2012 в 06:36
поделиться