Spring aop pointcut выражение к методу доступа возвращает тип

Я сделал, чтобы сервис взаимодействовал через интерфейс со многими методами, все из которых берут Запрос, возражают и возвращают объект Ответа. Все объекты запроса имеют общего предка, и все объекты ответа имеют другого общего предка (который имеет флаг успеха и поле сообщения).

Теперь я хочу иметь вокруг аспекта, который проверяет полномочия и т.д., выполняет служебный вызов и возвращает объект Ответа с кодом неисправности, если что-нибудь перестало работать. Проблема: Я должен знать, какому Ответу возражают для создания. Существует ли pointcut выражение, которое предоставляет мне доступ к типу возврата? Что-то вроде этого, возможно?

@Around(value = "execution(public *"
    + " com.mycompany.MyService+.*(..))"
    + " && args(request)"
    + " && returning( returnType)" // something like this would be nice

, argNames = "request,returnType")
public Object handleServiceCall(final ProceedingJoinPoint pjp,
    final Request request,
    final Class<? extends Response> returnType){ ... }
8
задан Sean Patrick Floyd 23 June 2010 в 08:55
поделиться

2 ответа

В Javadoc для JoinPoint упоминается метод getSignature(), возвращаемый тип которого Signature имеет подинтерфейс MethodSignature к которому вы можете попробовать применить метод getReturnType(), который может быть тем, что вы ищете.

6
ответ дан 5 December 2019 в 22:16
поделиться

Вы можете сделать эту проверку внутри метода around advice (handleServiceCall() в вашем случае)

Object actuals = pjp.proceed();
if(actuals instanceof MyResponse){
//TO:DO: Your code here
}
0
ответ дан 5 December 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: