J'ai configuré AspectJ avec Spring et cela fonctionne très bien lorsqu'on "attrape" des méthodes publiques appelées hors de la classe. Maintenant, je veux faire quelque chose comme ceci:Aspectj et intercepter des méthodes privées ou internes
public class SomeLogic(){
public boolean someMethod(boolean test){
if(test){
return innerA();
} else {
return innerB();
}
}
private boolean innerA() {// some logic}
private boolean innerA() {// some other logic}
}
SomeLogic est un SpringBean. Les méthodes innerA() et innerB() peuvent être déclarées privées ou publiques - la méthode someMethod() est appelée à partir d'une action Struts. Est-il possible d'attraper avec AspectJ les méthodes innerA() ou innerB() appelées par someMethod()?
Ma config (basé sur XML):
<aop:aspect id="innerAAspect" ref="INNER_A">
<aop:pointcut id="innerAService" expression="execution(* some.package.SomeLogic.innerA(..))"/>
</aop:aspect>
<aop:aspect id="innerAAround" ref="INNER_A">
<aop:around pointcut-ref="innerAService" method="proceed"/>
</aop:aspect>
<aop:aspect id="innerBAspect" ref="INNER_B">
<aop:pointcut id="innerBService" expression="execution(* some.package.SomeLogic.innerB(..))"/>
</aop:aspect>
<aop:aspect id="innerBAround" ref="INNER_B">
<aop:around pointcut-ref="innerBService" method="proceed"/>
</aop:aspect>
Dites-nous ce que vous avez pour vos expressions AspectJ. Je n'ai jamais eu de problème avec public vs privé auparavant. –
Pourriez-vous poster un exemple? – awonline