【发布时间】:2016-06-21 07:03:08
【问题描述】:
我已经构建了一个自定义 Spring Web MessageConverter 并覆盖了 writeInternal 方法。
我应该在 getBody() OutputStream 上调用 flush 吗? 我应该关闭 getBody() 输出流吗?
不同转换器之间似乎存在很大的不匹配。
我认为两者都不会,因为 spring 想要刷新输出流,请参阅 https://github.com/spring-projects/spring-framework/blob/56db1af11dbe51c88c753421e022bc5389361c04/spring-web/src/main/java/org/springframework/http/converter/AbstractGenericHttpMessageConverter.java#L101
但后来我看到 gson 实际上正在关闭流?这只是一个错误还是期望的行为? https://github.com/spring-projects/spring-framework/blob/56db1af11dbe51c88c753421e022bc5389361c04/spring-web/src/main/java/org/springframework/http/converter/json/GsonHttpMessageConverter.java#L203
然后 StringConverter 刷新但不关闭调用 https://github.com/spring-projects/spring-framework/blob/56db1af11dbe51c88c753421e022bc5389361c04/spring-core/src/main/java/org/springframework/util/StreamUtils.java#L110 的 https://github.com/spring-projects/spring-framework/blob/56db1af11dbe51c88c753421e022bc5389361c04/spring-web/src/main/java/org/springframework/http/converter/StringHttpMessageConverter.java#L107
所以在现有技术中并没有真正看到明确的答案......
【问题讨论】:
-
这个观察加一个。
标签: java spring spring-mvc spring-web