He tratado de encontrar la respuesta a esta pregunta tanto en el foro de Spring como en la búsqueda de StackOverflow. He encontrado muchas páginas describiendo arquitecturas horribles y preguntando por la misma cosa que hago, pero el uso previsto es diferente, así que tengan paciencia conmigo :-)Accediendo a HttpServletRequest desde el consejo de AOP en Spring 2.5 con anotaciones
Tengo un proyecto de Spring 2.5 usando controladores de formulario basados en anotaciones básicamente lo siguiente:
@RequestMapping("/edit/someObject")
public String handleSubmit(HttpServletRequest request, HttpServletResponse response, SomeObject someObject, BindingResult result) {
// Some check here
if(result.hasErrors()) {
return "form";
} else {
SomeObjectService.update(someObject);
return "redirect:/view/someObject";
}
}
en este puedo comprobar si hay alguna propiedad http en el HttpServletRequest y uso el HttpServletResponse para enviar una redirección si esta propiedad tiene un cierto valor. Esta comprobación se realiza es una gran cantidad (pero no todos) de los controladores de formulario en esta aplicación. Lo que me gustaría hacer es crear una anotación @CheckedSubmit manejada por algunos consejos de AOP para hacer esta comprobación y luego soltar los parámetros HttpServletRequest y HttpServletResponse del controlador.
Mi problema es que no tengo idea de cómo acceder al HttpServletRequest y HttpServletResponse actual de este consejo AOP sin utilizar estos dos parámetros como (sin usar) para el método anotado, que es lo que traté de evitar en primer lugar.
Resumen: ¿Cómo acceder a HttpServletRequest/Response desde el consejo de AOP en un método anotado @RequestMapping?
Con la observación adicional de que la Solución 2 funciona para objetos no instanciados por Spring cuando se usa @Configurable (requiere AspectJ) – Tomas