Desidero creare un Punto di collegamento per metodi privati annotati con un'annotazione specifica. Tuttavia, il mio aspetto non viene attivato quando l'annotazione si trova su un metodo privato come di seguito.Punto di vista AspectJ per metodi PRIVATE annotati
@Aspect
public class ServiceValidatorAspect {
@Pointcut("within(@com.example.ValidatorMethod *)")
public void methodsAnnotatedWithValidated() {
}
@AfterReturning(
pointcut = "methodsAnnotatedWithValidated()",
returning = "result")
public void throwExceptionIfErrorExists(JoinPoint joinPoint, Object result) {
...
}
Interface Servizio
public interface UserService {
UserDto createUser(UserDto userDto);
}
Servizio Attuazione
public class UserServiceImpl implements UserService {
public UserDto createUser(UserDto userDto) {
validateUser(userDto);
userDao.create(userDto);
}
@ValidatorMethod
private validateUser(UserDto userDto) {
// code here
}
Tuttavia, se mi sposto l'annotazione a un metodo di implementazione di interfaccia pubblica createUser
, il mio aspetto è innescato. Come dovrei definire il mio pointcut o configurare il mio aspetto per far funzionare il mio caso d'uso originale?
C'è qualche esempio a cui puoi puntare? Grazie! –