Fluxo diretamente para o fluxo de saída de resposta no método handler do controlador Spring MVC 3.1

Eu tenho um método controlador que lida com chamadas ajax e retorna JSON. Eu estou usando a biblioteca JSON do json.org para criar o JSON.

Eu poderia fazer o seguinte:

@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String getJson()
{
    JSONObject rootJson = new JSONObject();

    // Populate JSON

    return rootJson.toString();
}

Mas é ineficiente juntar a string JSON, apenas para que o Spring a grave no fluxo de saída da resposta.

Em vez disso, posso escrevê-lo diretamente no fluxo de saída de resposta da seguinte forma:

@RequestMapping(method = RequestMethod.POST)
public void getJson(HttpServletResponse response)
{
    JSONObject rootJson = new JSONObject();

    // Populate JSON

    rootJson.write(response.getWriter());
}

Mas parece que haveria uma maneira melhor de fazer isso do que ter que recorrer à passagem doHttpServletResponse no método manipulador.

Existe outra classe ou interface que pode ser retornada do método manipulador que eu posso usar, junto com o@ResponseBody anotação?

questionAnswers(3)

yourAnswerToTheQuestion