Configuré AspectJ con Spring y funciona bien cuando se "captura" un método público llamado desde fuera de la clase. Ahora quiero hacer algo como esto:Aspectj y captura de métodos privados o internos
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 es un SpringBean. Los métodos innerA() y innerB() podrían declararse como privados o públicos: el método someMethod() se llama desde una acción de Struts. ¿Es posible atrapar con AspectJ los métodos innerA() o innerB() invocados desde someMethod()?
Mi config (XML basado):
<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>
Cuéntanos qué tienes para tus expresiones AspectJ. Nunca he tenido un problema con público vs privado antes. –
¿Podría publicar un ejemplo? – awonline