Должен ли я закрыть параметр Writer для моего контроллера Spring 3? - PullRequest
6 голосов
/ 10 декабря 2010

В Раздел 15.3.2.3 Поддерживаемые аргументы метода-обработчика и возвращаемые типы документации Spring 3.0 говорит, что java.io.OutputStream или java.io.Writer могут быть указаны в качестве параметра метод, аннотированный @RequestMapping "для генерации содержимого ответа. Это значение является необработанным OutputStream / Writer, предоставляемым Servlet API." Ответственность метода заключается в том, чтобы закрыть писатель до его завершения или он должен оставаться открытым, и какой-то другой процесс Spring закроет его?

Ответы [ 2 ]

3 голосов
/ 11 декабря 2010

Он должен оставить это в покое.Как правило, если ваш код не открыл его, он также не должен его закрывать.

В этом случае контейнер сервлетов (не Spring) отвечает за сброс и закрытие всехпотоки.

Вы могли бы сделать это самостоятельно, я сомневаюсь, что это принесет какой-либо вред, но в этом нет необходимости.

1 голос
/ 11 декабря 2010

skaffman правильно, вам не нужно закрывать его, а на самом деле, вероятно, не стоит, но все же хорошая идея очистить его (), особенно в предложении 'finally', если вы имеете дело с кодом, который генерирует исключения, т.е. экспортирует из базы данных.

...