Chcę utworzyć punkt przekroju dla metod prywatnych, które są opatrzone określonym adnotacji. Jednak mój aspekt nie jest wyzwalany, gdy adnotacja jest na prywatnej metody, jak poniżej.AspectJ punktu przekroju dla adnotacjami prywatnych metod
@Aspect
public class ServiceValidatorAspect {
@Pointcut("within(@com.example.ValidatorMethod *)")
public void methodsAnnotatedWithValidated() {
}
@AfterReturning(
pointcut = "methodsAnnotatedWithValidated()",
returning = "result")
public void throwExceptionIfErrorExists(JoinPoint joinPoint, Object result) {
...
}
Interfejs usługi
public interface UserService {
UserDto createUser(UserDto userDto);
}
Wdrożenie usługi
public class UserServiceImpl implements UserService {
public UserDto createUser(UserDto userDto) {
validateUser(userDto);
userDao.create(userDto);
}
@ValidatorMethod
private validateUser(UserDto userDto) {
// code here
}
Jednak jeśli przeniosę adnotacji do sposobu realizacji createUser
interfejsu publicznego, mój aspekt jest wyzwalany. Jak zdefiniować swój punkt końcowy lub skonfigurować mój aspekt, aby mój oryginalny przypadek użycia działał?
Czy istnieje jakiś przykład tego można wskazać? dzięki! –