Из приведенного примера кода видно, что вы пытаетесь создать совет для класса, который не реализует никаких интерфейсов. Как описано в разделе Механизмы прокси документации Spring, если вы собираетесь это сделать, вам нужно включить CGLIB:
<aop:aspectj-autoproxy proxy-target-class="true" />
Я лично нашел, что это немного более привередливо, чем указывается в документации, и хотя это работает, если все звезды правильно выровнены, это часто проще - и предпочтительно с точки зрения дизайна - - объявить ваш совет АОП по интерфейсу следующим образом. (Обратите внимание, что вам нужно получить свой экземпляр KlazzImpl
от вашего BeanFactory
/ ApplicationContext
.)
public interface Klazz {
ResponseObject doSomething(RequestObject request);
}
public class KlazzImpl implements Klazz {
public ResponseObject doSomething(RequestObject request) {...}
}
Кроме того, использование вами выражения args
немного запрещено. Смотрите следующее:
@Aspect
public class UserExistsCheck {
@Autowired
private UserInformation userInformation;
@Around("execution(* a.b.c.d.*.*(..)) && args(reqObj)")
public Object checkUser(ProceedingJoinPoint pjp, a.b.c.d.RequestObject reqObj) throws Throwable {
// ...
}
}
Эти изменения должны сделать работу.