AspectJ Pointcut, um einen lokalen Methodencode zu überprüfen und eine Variable innerhalb der lokalen Methode zu drucken
Frage
Ich versuche, einen Pointcut und einen Rat zu schreiben, der eine Zeichenfolge mit der folgenden Methode drucken könnte -
public CustomerDto getCustomer(Integer customerCode){
CustomerDto customerDto = new CustomerDto();
String emailID =getEmailAddress();
customerDto.setEmailAddress(emailID);
customerDto.setEmployer(getEmployer());
customerDto.setSpouseName(getSpouse());
return customerDto;
}
Ich kann nicht herausfinden, wie ein Pointcut die String-E-Mail-ID überprüft und dann den Wert desselben in einem Hinweis ausgibt.
Lösung
Vielleicht brauchen Sie so etwas wie Folgendes:
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);
}
}
Wobei TargetClass
eine Klasse ist, die getCustomer()
- und getEmailAddress()
-Methoden enthält.
Oder dasselbe mit @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);
}
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow