AspectJ Pointcut per analizzare il codice di un metodo locale e stampare una variabile all'interno del metodo locale
Domanda
Sto cercando di scrivere un pointcut e un consiglio che potrebbe stampare una stringa dal seguente metodo -
public CustomerDto getCustomer(Integer customerCode){
CustomerDto customerDto = new CustomerDto();
String emailID =getEmailAddress();
customerDto.setEmailAddress(emailID);
customerDto.setEmployer(getEmployer());
customerDto.setSpouseName(getSpouse());
return customerDto;
}
Non sono in grado di capire un modo in cui un taglio di punti esamina la stringa emailID e quindi stampa il valore della stessa in un consiglio.
Soluzione
Forse hai bisogno di qualcosa di simile al seguente:
public privileged aspect LocalMethodCallAspect {
private pointcut localMethodExecution() : withincode(public CustomerDto TargetClass.getCustomer(Integer)) &&
call(private String TargetClass.getEmailAddress());
after() returning(String email) : localMethodExecution()
{
System.out.println(email);
}
}
Dove TargetClass
è una classe contenente metodi getCustomer()
e getEmailAddress()
.
O lo stesso usando @AspectJ:
@Aspect
public class LocalMethodCallAnnotationDrivenAspect {
@Pointcut("withincode(public CustomerDto TargetClass.getCustomer(Integer)) && " +
"call(private String TargetClass.getEmailAddress())")
private void localMethodExecution() {
}
@AfterReturning(pointcut="localMethodExecution()",returning="email")
public void printingEmail(String email) {
System.out.println(email);
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow