2010-12-10 9 views
6

Spring 3.0のドキュメントのSection 15.3.2.3 Supported handler method arguments and return typesでは、レスポンスのコンテンツを生成するために@RequestMappingでアノテーションされたメソッドのパラメータとしてjava.io.OutputStreamまたはjava.io.Writerを指定することができます。サーブレットAPIによって公開されるOutputStream/Writer作者が終了する前に閉じるか、開いたままにしておき、他のいくつかのSpringプロセスで閉じるべきかどうかは、メソッドの責任ですか?WriterパラメータをSpring 3コントローラにクローズする必要がありますか?

+0

これらのストリームはServlet APIから取得されるため、http://stackoverflow.com/questions/1159168/should-one-call-close-on-httpservletresponse-getoutputstream-getwriter – axtavt

+0

[サーブレットの出力ストリーム?](http://stackoverflow.com/questions/1829784/should-i-close-the-servlet-outputstream) – BalusC

答えて

3

それだけのままにする必要があります。一般的な経験則として、あなたのコードがそれを開かなかった場合、コードはそれを閉じるべきではありません。

この場合、サーブレットコンテナ(Springではなく)がすべてのストリームをフラッシュして閉じることになります。

あなたはになります。あなたはそれを自分で行いますが、それは何らかの害を及ぼすことはないと思いますが、そうする必要はありません。

+0

春に提供されるストリームを閉じるべきではありませんが、パイプを使用するとどうなりますかすなわち、 CSVWriterライター=新しいCSVWriter(springWriter); writer.writeLine( "blabla"); 私は作家を閉じない(または少なくともそれをフラッシュする)場合、私は何らかの種類のバッファで行われるので、私は仕事を失うかもしれません。 –

1

skaffmanは正しいですが、閉じる必要はありませんが、実際には使用しないでください。ただし、コードを処理している場合は、特に 'finally'節でflush()することをお勧めします。例外をスローします。つまり、データベースからのエクスポートです。

関連する問題