Метод перехвата с Spring AOP с использованием только аннотаций

В моем файле контекста Spring есть что-то вроде этого:

<bean id="userCheck" class="a.b.c.UserExistsCheck"/>
<aop:config>
      <aop:aspect ref="userCheck">
         <aop:pointcut id="checkUser"
                expression="execution(* a.b.c.d.*.*(..)) &amp;&amp; args(a.b.c.d.RequestObject)"/>
         <aop:around pointcut-ref="checkUser" method="checkUser"/>
      </aop:aspect>
</aop:config>    

a.b.c.UserExistsCheck выглядит так:

@Aspect
public class UserExistsCheck {

@Autowired
private UserInformation userInformation;

public Object checkUser(ProceedingJoinPoint pjp) throws Throwable {
    int userId = ... //get it from the RequestObject passed as a parameter
    if (userExists(userId)) {
        return pjp.proceed();
    } else {
        return new ResponseObject("Invalid user);
    }
}

И класс, который перехватывается с этим материалом, выглядит так:

public class Klazz {
    public ResponseObject doSomething(RequestObject request) {...}
}

Это работает. UserExistCheck выполняется по желанию перед передачей вызова в Klazz. Проблема в том, что это единственный способ, с помощью которого я работал. Чтобы заставить это работать, используя аннотации вместо файла контекста, кажется, слишком много для моего маленького мозга. Итак ... как именно я должен аннотировать методы в UserExistsCheck и Klazz? И мне все еще нужно что-то еще? Еще один класс? Все еще что-то в файле контекста?

Ответы на вопрос(3)

Ваш ответ на вопрос