Ich möchte einen Pointcut für private Methoden erstellen, die mit einer bestimmten Annotation versehen sind. Mein Aspekt wird jedoch nicht ausgelöst, wenn sich die Anmerkung auf einer privaten Methode wie unten befindet.AspectJ pointcut für annotierte PRIVATE-Methoden
@Aspect
public class ServiceValidatorAspect {
@Pointcut("within(@com.example.ValidatorMethod *)")
public void methodsAnnotatedWithValidated() {
}
@AfterReturning(
pointcut = "methodsAnnotatedWithValidated()",
returning = "result")
public void throwExceptionIfErrorExists(JoinPoint joinPoint, Object result) {
...
}
Service Interface
public interface UserService {
UserDto createUser(UserDto userDto);
}
Service Implementation
public class UserServiceImpl implements UserService {
public UserDto createUser(UserDto userDto) {
validateUser(userDto);
userDao.create(userDto);
}
@ValidatorMethod
private validateUser(UserDto userDto) {
// code here
}
Allerdings, wenn ich die Anmerkung an eine öffentliche Schnittstelle Methode Implementierung createUser
bewegen, wird mein Aspekt ausgelöst. Wie soll ich meinen Pointcut definieren oder meinen Aspekt konfigurieren, damit mein ursprünglicher Anwendungsfall funktioniert?
Gibt es ein Beispiel dafür, auf das Sie zeigen können? Vielen Dank! –