Tengo una interfaz de servicio con muchos métodos, todos los cuales toman un objeto Request y devuelven un objeto Response. Todos los objetos de solicitud tienen un ancestro común y todos los objetos de respuesta tienen un antecesor común diferente (que tiene un indicador de éxito y un campo de mensaje).Expresión de punto de corte de Spring Aop para acceder al tipo de retorno de método
Ahora quiero tener un aspecto circular que verifique los permisos, etc., realice la llamada de servicio y devuelva un objeto de respuesta con un código de falla si algo falla. El problema es: necesito saber qué tipo de objeto de respuesta crear. ¿Hay una expresión puntual que me da acceso al tipo de devolución? Algo como esto, tal vez?
@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){ ... }
¿Desea asesorar a varios métodos con el mismo aspecto, que a veces necesita producir y devolver el objeto de respuesta sin llamar al servicio, y ese objeto de respuesta debe ser del subtipo correcto para el método de servicio? –
yup, eso es exactamente lo que quiero –