Necesito introducir algunos métodos y sus atributos mediante el uso de anotaciones como cortes de punto, pero ¿cómo puedo acceder a esos atributos de método? Tengo el siguiente código que puede ejecutar código antes de que se ejecute el método, pero no sé cómo puedo acceder a esos attrbiutes.¿Cómo puedo acceder a los atributos de los métodos con Spring AOP (estilo AspectJ)?
package my.package;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class MyAspect {
@Pointcut(value="execution(public * *(..))")
public void anyPublicMethod() {
}
@Around("anyPublicMethod() && @annotation(myAnnotation)")
public Object myAspect(ProceedingJoinPoint pjp, MyAnnotation myAnnotation)
throws Throwable {
// how can I access method attributes here ?
System.out.println("hello aspect!");
return pjp.proceed();
}
}
Ok ahora Im conseguirlo, pero devuelve parámetros impares. org.springframework.s[email protected]8c666a org.springframework.security.web.context.Ht[email protected]197d20c. Mi método es el controlador de Spring con @RequestMapping y mi propia anotación. ¿Por qué me da algunos objetos Spring Security aquí cuando debería dar el objeto HttpServletRequest como params? – newbie
Esos son proxies de primavera alrededor de los objetos de solicitud HTTP originales. Consulte mi respuesta actualizada: puede obtener los tipos de parámetros definidos (análisis estático) y los argumentos de tiempo de ejecución reales (análisis dinámico) –
¿Cómo puedo obtener valores de parámetros estáticos, en este caso el objeto HttpServletRequest? – newbie