AspectJ pointcut dla opisywanych metod PRIVATE
Chcę utworzyć Pointcut dla prywatnych metod opatrzonych adnotacjami. Jednak mój aspekt nie jest wyzwalany, gdy adnotacja jest metodą prywatną, jak poniżej.
@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 serwisowy
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
}
Jeśli jednak przeniosę adnotację do implementacji metody interfejsu publicznegocreateUser
, mój aspekt jest wywołany. Jak mam zdefiniować swój punkt odniesienia lub skonfigurować mój aspekt, aby mój oryginalny przypadek użycia działał?