AspectJ pointcut para métodos PRIVATE anotados
Eu quero criar um ponto de corte para métodos privados que são anotados com uma anotação específica. No entanto, meu aspecto não é acionado quando a anotação está em um método particular, como abaixo.
@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);
}
Implementação de Serviço
public class UserServiceImpl implements UserService {
public UserDto createUser(UserDto userDto) {
validateUser(userDto);
userDao.create(userDto);
}
@ValidatorMethod
private validateUser(UserDto userDto) {
// code here
}
No entanto, se eu mover a anotação para uma implementação do método de interface públicacreateUser
meu aspecto é acionado. Como devo definir meu pointcut ou configurar meu aspecto para que meu caso de uso original funcione?