Estoy buscando una manera de autowire HttpServletResponse. No funciona con la primavera de la caja, pero he encontrado esta descripción. Esto funciona, pero es molesto, en que la primavera, obviamente, tiene un mecanismo para hacer que los objetos ámbito de petición (es decir,HttpServletRequest) y este parece ser un hack atornillada en la parte superior.

Hay una forma de gancho en el mismo mecanismo que la primavera se utiliza para HttpServletRequest? Y, alguna idea de por qué el equipo primavera decidió hacer sólo HttpServletRequest autowire capaz (y excluidos HttpServletResponse)?

OriginalEl autor Kevin | 2011-08-08

2 Comentarios

  1. 9

    Quizás hay alguna solución, pero no es tan obvio, porque no es la forma en que está destinado a ser. Spring MVC está destinado a tener singleton @Controller frijoles que proporcionan @RequestMapping métodos que tome la solicitud y la respuesta como argumentos.

    Si necesita la respuesta en otro lugar (la capa de servicio) – no lo hagas. La respuesta no debe ir más allá de la web (controlador) de la capa.

    Para inyectar la respuesta, usted necesita:
    – para almacenar la respuesta en un ThreadLocal
    – para hacer una fábrica de frijol que devuelve la respuesta actual

    Sobre el código de ejemplo que mostró – no estoy seguro de que si usted no va a necesitar la fábrica de frijol para devolver un proxy (en aplicación de la HttpServletResponse), que a su vez a devolver la respuesta actual. Y se hace bastante complicado.

    Pero en última instancia, usted no debe hacer eso. Si usted necesita para interceptar varios controlador de invocaciones, el uso de la mvc-interceptor. Si usted realmente necesita para utilizar un aspecto, usted puede obtener la respuesta si se pasa como argumento al método interceptado.

    No tan rápido: ¿Qué acerca de un @Aspect que está destinado a envolver el @Controller. El “no a la forma en que está destinado a ser” el argumento no explica por qué HttpServletRequest es autowire capaz y HttpServletResponse no es cualquiera.
    El uso de interceptores para que. Que ver la respuesta
    La petición – no sé por qué lo hicieron inyectable. Voy a buscar una manera de inyectar la respuesta y le permitirá saber ypu
    Estás diciendo que spring AOP apoyo es insuficiente para el caso de uso específico de ajuste de los controladores que desea acceder a la respuesta?!
    usted dijo que “La respuesta no debe ir más allá de la web”, Pero lo que si tengo que modificar la respuesta coockie por mi lógica interna ?

    OriginalEl autor Bozho

  2. 4

    Se puede simplemente incluir la solicitud en el método de manejar?

    @RequestMapping(method=Method.GET, value="myUrl")
    public String doGet(HttpServletResponse response){//spring will put the response in for you
      ... 
    }
    Él está buscando la respuesta, en un no-Controlador de frijol. (Creo).
    Buen punto, actualizado por el bien de él winting la respuesta. Aunque Bozho tiene la mejor respuesta.

    OriginalEl autor John Vint

Dejar respuesta

Please enter your comment!
Please enter your name here